@@ -37,7 +37,7 @@ public int addUser(String national_id, String name, String age, String address)
3737 }
3838 }
3939
40- public List <RatePlane > getRatePlane () throws SQLException {
40+ public List <RatePlane > getRatePlanes () throws SQLException {
4141 stmt = this .con .prepareStatement ("select * from bscs.rateplanes" );
4242 ResultSet rs = stmt .executeQuery ();
4343 List <RatePlane > ratePlanes = new ArrayList <>();
@@ -62,23 +62,103 @@ public List<RatePlane> getRatePlane() throws SQLException {
6262 return ratePlanes ;
6363 }
6464
65- public int addContract (String national_id , String rateplane , String msisdn ) throws SQLException {
66- stmt = this .con .prepareStatement ("insert into bscs.contract(msisdn,rateplane_id,userid) values(?,?,?)" );
67- stmt .setInt (1 , Integer .parseInt (msisdn ));
65+ public RatePlane getRatePlane (String id ) throws SQLException {
66+ stmt = this .con .prepareStatement ("select * from bscs.rateplanes where id = ?" );
67+ stmt .setInt (1 ,Integer .parseInt (id ));
68+ ResultSet rs = stmt .executeQuery ();
69+ List <RatePlane > ratePlanes = new ArrayList <>();
70+
71+ while (rs .next ()) {
72+ ratePlanes .add (new RatePlane (
73+ rs .getInt ("id" ),
74+ rs .getString ("commercial_name" ),
75+ rs .getInt ("voice_service" ),
76+ rs .getInt ("cross_voice_service" ),
77+ rs .getInt ("data_service" ),
78+ rs .getInt ("sms_service" ),
79+ rs .getInt ("roaming_service" ),
80+ rs .getInt ("additional_minutes_service" ),
81+ rs .getInt ("additional_sms_service" ),
82+ rs .getInt ("additional_data_service" ),
83+ rs .getInt ("additional_roaming_service" ),
84+ rs .getInt ("fee" )));
85+ }
86+
87+ if (ratePlanes .size ()!=0 ){
88+ return ratePlanes .get (0 );
89+ }else {
90+ return null ;
91+ }
92+ }
93+
94+ public int addContract (String national_id , String rateplane , String msisdn ,String discount , String freeUnits ) throws SQLException {
95+ stmt = this .con .prepareStatement ("insert into bscs.contract(msisdn,rateplane_id,userid,discount,additional_sp) values(?,?,?,?,?)" );
96+ stmt .setString (1 , msisdn );
6897 stmt .setInt (2 , Integer .parseInt (rateplane ));
6998 stmt .setInt (3 , Integer .parseInt (national_id ));
99+ stmt .setInt (4 , Integer .parseInt (discount ));
100+ stmt .setInt (5 , Integer .parseInt (freeUnits ));
70101
71102 stmt .executeUpdate ();
72103 ResultSet rs = stmt .getGeneratedKeys ();
73104 System .out .println (rs );
74105 if (rs != null ) {
75106 System .out .println ("contract added" );
107+ RatePlane uRatePlane =getRatePlane (rateplane );
108+ updateUsage (freeUnits ,uRatePlane ,national_id );
76109 return 1 ;
77110 } else {
78111 return -1 ;
79112 }
80113 }
81114
115+ private void updateUsage (String freeUnits , RatePlane rateplane ,String uid ) throws SQLException {
116+ List <ServicePackage > servicePackages =getServicePackage ();
117+ int freeUnit =getFreeUnit (freeUnits );
118+ stmt = this .con .prepareStatement ("update bscs.contract set current_voice = ? , current_cross_voice = ? ,current_data = ? , current_sms = ? ,current_roaming=?,current_additional_sp=? where userid = ?;" );
119+ stmt .setInt (1 , getServiceUnits (rateplane .getVoice_service (),servicePackages ));
120+ stmt .setInt (2 , getServiceUnits (rateplane .getCross_voice_service (),servicePackages ));
121+ stmt .setInt (3 , getServiceUnits (rateplane .getData_service (),servicePackages ));
122+ stmt .setInt (4 , getServiceUnits (rateplane .getSms_service (),servicePackages ));
123+ stmt .setInt (5 , getServiceUnits (rateplane .getRoaming_service (),servicePackages ));
124+ stmt .setInt (6 , freeUnit );
125+ stmt .setInt (7 , Integer .parseInt (uid ));
126+
127+ stmt .executeUpdate ();
128+ ResultSet rs = stmt .getGeneratedKeys ();
129+ System .out .println (rs );
130+ if (rs != null ) {
131+ System .out .println ("usage updated" );
132+ } else {
133+ System .out .println ("error while updating usage" );
134+ }
135+ }
136+
137+ private int getFreeUnit (String freeUnits ) throws SQLException {
138+ stmt = this .con .prepareStatement ("select * from bscs.service_package where id = ?" );
139+ stmt .setInt (1 ,Integer .parseInt (freeUnits ));
140+ ResultSet rs = stmt .executeQuery ();
141+ List <ServicePackage > servicePackage = new ArrayList <>();
142+
143+ while (rs .next ()) {
144+ servicePackage .add (new ServicePackage (
145+ rs .getInt ("id" ),
146+ rs .getString ("service_type" ),
147+ rs .getInt ("units" )
148+ ));
149+ }
150+ return servicePackage .get (0 ).getUnits ();
151+ }
152+
153+ private int getServiceUnits (int voice_service ,List <ServicePackage > servicePackages ) throws SQLException {
154+ for (ServicePackage servicePackage : servicePackages ){
155+ if (servicePackage .getId ()==voice_service ){
156+ return servicePackage .getUnits ();
157+ }
158+ }
159+ return 0 ;
160+ }
161+
82162 public List <Users > getUsers () throws SQLException {
83163 stmt = this .con .prepareStatement ("select * from bscs.users" );
84164 ResultSet rs = stmt .executeQuery ();
@@ -184,4 +264,20 @@ public int addRatePlan (RatePlane ratePlane) throws SQLException {
184264 return -1 ;
185265 }
186266 }
267+
268+ public List <ServicePackage > getFreeUnits () throws SQLException {
269+ stmt = this .con .prepareStatement ("select * from bscs.service_package where service_type = ?" );
270+ stmt .setString (1 ,"free" );
271+ ResultSet rs = stmt .executeQuery ();
272+ List <ServicePackage > servicePackage = new ArrayList <>();
273+
274+ while (rs .next ()) {
275+ servicePackage .add (new ServicePackage (
276+ rs .getInt ("id" ),
277+ rs .getString ("service_type" ),
278+ rs .getInt ("units" )
279+ ));
280+ }
281+ return servicePackage ;
282+ }
187283}
0 commit comments