public int addNewRecord(int btID, int sID, int storageNumber)
 {
     IDBBatteryStorage dbStorage = new DBBatteryStorage();
     BatteryTypeCtr bCtr = new BatteryTypeCtr();
     int id = dbStorage.addNewRecord(btID, sID, storageNumber);
         PeriodCalculator pCalc = new PeriodCalculator();
         pCalc.createFirstPeriod(id);
     return id;
 }
 public bool deleteBookingForStation(int sId, int btId, int quantity, DateTime time)
 {
     bool success = false;
     IDBBatteryStorage dbStorage = new DBBatteryStorage();
     MBatteryStorage storage = dbStorage.getRecord(btId, sId, true);
     IDPeriod dbPeriod = new DBPeriod();
     PeriodCalculator pCalc = new PeriodCalculator();
     try
     {
         MPeriod period = pCalc.getBookingPeriod(storage, time);
         period.bookedBatteryNumber = period.bookedBatteryNumber - quantity;
         dbPeriod.updateRecord(storage.id, period.time, period.initBatteryNumber, period.bookedBatteryNumber);
         success = true;
     }
     catch (Exception)
     {
         throw new SystemException("Can not delete Booking");
     }
     return success;
 }
 public bool validateUpdateBookingForStation(int sId, int btId, int updateQuantity, DateTime time)
 {
     bool validate = false;
     IDBBatteryStorage dbStorage = new DBBatteryStorage();
     MBatteryStorage storage = dbStorage.getRecord(btId, sId, true);
     PeriodCalculator pCalc = new PeriodCalculator();
     MPeriod period = pCalc.getBookingPeriod(storage, time);
     MPeriod previous = pCalc.getPreviousPeriod(storage, period);
     MPeriod next = pCalc.getNextPeriod(storage, period);
     int booked = period.bookedBatteryNumber + previous.bookedBatteryNumber;
     int available = period.initBatteryNumber - booked;
     int futureBooked = period.bookedBatteryNumber + next.bookedBatteryNumber;
     int futureAvailable = next.initBatteryNumber - futureBooked;
     if (available >= updateQuantity && futureAvailable >= updateQuantity)
     {
         validate = true;
     }
     return validate;
 }
 public void updateRecord(int id, int btid, int sID, int storageNumber)
 {
     IDBBatteryStorage dbStorage = new DBBatteryStorage();
     dbStorage.updateRecord(id, btid, sID, storageNumber);
     IDPeriod dbPeriod = new DBPeriod();
     PeriodCalculator pCalc = new PeriodCalculator();
     MPeriod period = pCalc.getBookingPeriod(getRecord(id,true),DateTime.Now);
     List<MPeriod> periods = pCalc.getAllPeriodsAfter(getRecord(id, true), period);
     foreach (MPeriod p in periods)
     {
         dbPeriod.updateRecord(id, p.time, pCalc.getInitNumber(getRecord(id, true)));
     }
 }