//* * * CREATION METHODS public int createTariff(double value, string startDate, int standingChargePeriodId, int bandingPeriodId, int meterId) { Tariff tariff = new Tariff { StartDate = Convert.ToDateTime(startDate), SCValue = value }; tariff.SCPeriod = mediator.DataManager.getPeriod(standingChargePeriodId); tariff.BandPeriod = mediator.DataManager.getPeriod(bandingPeriodId); int tariffId = mediator.DataManager.saveTariff(tariff); mediator.DataManager.addTariffToMeter(tariffId, meterId); return tariffId; }
public abstract Tariff editTariff(int tariffId, Tariff newTariff);
public abstract int saveTariff(Tariff tariff);
/// <summary> /// Saves the tariff object to the databse /// </summary> /// <param name="tariff"></param> public override int saveTariff(Tariff tariff) { tariff.Bands = new List<TariffBand>(); emdb.Tariffs.Add(tariff); emdb.SaveChanges(); return tariff.Id; }
/// <summary> /// Retreives the tariff with the specified id, along with associated tariff bands & standing charge period /// </summary> /// <param name="tariffId"></param> /// <returns></returns> public override Tariff getTariff(int tariffId) { Tariff tariff = emdb.Tariffs.Include("Bands") .Include("SCPeriod") .Include("BandPeriod") .Single(t => t.Id == tariffId); ///total disconnection from the EF4.1 proxy object is required Tariff trf = new Tariff(); trf.Id = tariff.Id; trf.SCPeriod = tariff.SCPeriod; trf.SCValue = tariff.SCValue; trf.BandPeriod = tariff.BandPeriod; trf.StartDate = tariff.StartDate; trf.Bands = tariff.Bands.ToList(); return trf; }
/// <summary> /// Updates tariff with specified id. Child TariffBand objects ARE updated, and their ids are required in the new tariff object /// </summary> /// <param name="tariffId">id of tariff to update</param> /// <param name="newTariff">tariff object with replacement data NLCUDING updated TariffBand objects with their ids as they exist in the database before change</param> public override Tariff editTariff(int tariffId, Tariff newTariff) { Tariff oldTariff = emdb.Tariffs.Find(tariffId); ///update each band item seperately foreach (TariffBand newBand in newTariff.Bands) { editTariffBand(newBand.Id, newBand); } oldTariff.SCPeriod = emdb.Periods.Find(newTariff.SCPeriod.Id); oldTariff.BandPeriod = emdb.Periods.Find(newTariff.BandPeriod.Id); oldTariff.SCValue = newTariff.SCValue; oldTariff.StartDate = newTariff.StartDate; emdb.SaveChanges(); return oldTariff; }
public static Tariff createTariffFromViewModel(TariffViewModel tariffViewModel) { Tariff tariff = new Tariff(); if (tariffViewModel.Id != 0) { tariff.Id = tariffViewModel.Id; } tariff.SCPeriod = new Period { Id = tariffViewModel.SCPeriodId }; tariff.BandPeriod = new Period { Id = tariffViewModel.BandPeriodId }; tariff.SCValue = tariffViewModel.SCValue; tariff.StartDate = tariffViewModel.StartDate; tariff.Bands = new List<TariffBand>(); TariffBand newBand = new TariffBand(); newBand.LowerkWhLimit = (int)tariffViewModel.LowerLimit1; newBand.UnitRate = (int)tariffViewModel.Rate1; newBand.Id = tariffViewModel.Band1Id; ///isBanded is determined during conversion to tariffViewModel when the tariff object is retreived in the HTTP GET Edit method ///of the TariffController. It is preserved to HTTP POST Edit via hidden fields in the Edit.cshtml view. ///isbanded should be determined at each conversion since the user may want to edit an existing tariff to include additional / fewer bands /// tariffViewModel.IsBanded = !((tariffViewModel.LowerLimit1 == 0 | tariffViewModel.LowerLimit1 == null) && (tariffViewModel.UpperLimit1 == 0 | tariffViewModel.UpperLimit1 == null)); if (!tariffViewModel.IsBanded) { ///no upper limit and therefore no subsequent bands newBand.UpperkWhLimit = 0; tariff.Bands.Add(newBand); } else { ///get upperLimit for first band & save to tariff model object newBand.UpperkWhLimit = (int)tariffViewModel.UpperLimit1; tariff.Bands.Add(newBand); ///follow same pattern for second band TariffBand newBand2 = new TariffBand(); newBand2.LowerkWhLimit = (int)tariffViewModel.LowerLimit2; newBand2.UnitRate = tariffViewModel.Rate2; newBand2.Id = tariffViewModel.Band2Id; if ((tariffViewModel.UpperLimit2 == null | tariffViewModel.UpperLimit2 == 0) && (tariffViewModel.LowerLimit2 == 0 | tariffViewModel.LowerLimit2 == null)) { ///there is no band if lower is null/zero AND upper is null/zero newBand2.UpperkWhLimit = -1; ///no band } else { ///there is a band... if (tariffViewModel.UpperLimit2 != 0) { ///with an upper limit newBand2.UpperkWhLimit = (int)tariffViewModel.UpperLimit2; } else { ///without an upper limit newBand2.UpperkWhLimit = 0; } } tariff.Bands.Add(newBand2); TariffBand newBand3 = new TariffBand(); newBand3.LowerkWhLimit = (int)tariffViewModel.LowerLimit3; newBand3.UnitRate = tariffViewModel.Rate3; newBand3.Id = tariffViewModel.Band3Id; if ((tariffViewModel.UpperLimit3 == null | tariffViewModel.UpperLimit3 == 0) && (tariffViewModel.LowerLimit3 == 0 | tariffViewModel.LowerLimit3 == null)) { ///there is no band if lower is null/zero and upper is null/zero newBand3.UpperkWhLimit = -1; ///no band } else { ///there is a band... if (tariffViewModel.UpperLimit3 != 0) { ///with an upper limit newBand3.UpperkWhLimit = (int)tariffViewModel.UpperLimit3; } else { ///without an upper limit newBand3.UpperkWhLimit = 0; } } tariff.Bands.Add(newBand3); } return tariff; }
public static TariffViewModel createTariffViewFromTariff(Tariff tariffModel, bool forEditing) { TariffViewModel tariffView = new TariffViewModel(); tariffView.Id = tariffModel.Id; tariffView.StartDate = tariffModel.StartDate; tariffView.SCPeriodId = tariffModel.SCPeriod.Id; tariffView.SCValue = tariffModel.SCValue; tariffView.BandPeriodId = tariffModel.BandPeriod.Id; if (tariffModel.Bands.Count == 0) { ///there are no bands so we can just return now return tariffView; } else if (tariffModel.Bands.ElementAt(0) != null) { tariffView.IsBanded = (tariffModel.Bands.ElementAt(0).UpperkWhLimit > 0); } else { tariffView.IsBanded = false; } for (int i = 0; i < tariffModel.Bands.Count; i++) { TariffBand band = tariffModel.Bands.ElementAt(i); if (i == 0) { tariffView.LowerLimit1 = band.LowerkWhLimit; tariffView.UpperLimit1 = band.UpperkWhLimit; tariffView.Rate1 = band.UnitRate; tariffView.Band1Id = band.Id; } if (i == 1) { tariffView.LowerLimit2 = band.LowerkWhLimit; tariffView.UpperLimit2 = band.UpperkWhLimit; tariffView.Rate2 = band.UnitRate; tariffView.Band2Id = band.Id; } if (i == 2) { tariffView.LowerLimit3 = band.LowerkWhLimit; tariffView.UpperLimit3 = band.UpperkWhLimit; tariffView.Rate3 = band.UnitRate; tariffView.Band3Id = band.Id; } } if (forEditing) { if (tariffView.UpperLimit2 == -1) tariffView.UpperLimit2 = 0; if (tariffView.UpperLimit3 == -1) tariffView.UpperLimit3 = 0; } return tariffView; }