private void button_constFees_add_Click(object sender, RoutedEventArgs e) { BoolHelper bh = new BoolHelper(); ConstFeesAdd cfa = new ConstFeesAdd(Flats.ToList(), bh); ConstFees cf = new ConstFees(); cfa.DataContext = cf; cfa.ShowDialog(); if (bh.BoolHelp) { try { dbContext.ConstFees.Add(cf); dbContext.SaveChanges(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } ConstFees = new ObservableCollection <ConstFees>(dbContext.ConstFees.ToList()); dataGrid_constFees.ItemsSource = null; dataGrid_constFees.ItemsSource = ConstFees; }
public double TotalConstMoneyForOneLease(Lease lease, DateTime From, DateTime To) { ConstFees constFeesForFlat = CurrentConstFeeForFlat(lease.FlatsId, lease.To); if (constFeesForFlat == null) { throw new SystemException("Nie ustawiono kosztów na to mieszkanie!"); } DateTime newFrom; DateTime newTo; int TotalDays; double sumForUser = 0; if (lease.To <= To) { newTo = lease.To; } else { newTo = To; } if (lease.From >= From) { newFrom = lease.From; } else { newFrom = From; } TotalDays = (Int32)(newTo - newFrom).TotalDays; for (int i = 0; i <= TotalDays; i++) { sumForUser = sumForUser + (constFeesForFlat.SumOfConst() / ((double)(DateTime.DaysInMonth(newFrom.Year, newFrom.Month)) * CountUsersInFlat(lease.FlatsId, newFrom))); newFrom = newFrom.AddDays(1); } lease.ConstSum = Math.Round(sumForUser, 2); return(lease.ConstSum); }
private void button_constFees_modify_Click(object sender, RoutedEventArgs e) { if (dataGrid_constFees.SelectedIndex == -1) { return; } BoolHelper bh = new BoolHelper(); ConstFeesAdd cfa = new ConstFeesAdd(Flats.ToList(), bh); ConstFees cf = ConstFees[dataGrid_constFees.SelectedIndex]; ConstFees cfc = cf.ShallowCopy(); cfa.DataContext = cf; cfa.ShowDialog(); if (bh.BoolHelp) { try { dbContext.SaveChanges(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { cf = cfc.ShallowCopy(); dbContext.ConstFees.AddOrUpdate(cf); dbContext.SaveChanges(); } dataGrid_constFees.ItemsSource = null; dataGrid_constFees.ItemsSource = ConstFees; }
/* * public double TotalConstMoneyForOneLease(int flatId, DateTime From, DateTime To) * { * ConstFees constFeesForFlat = CurrentConstFeeForFlat(flatId, To); * if (constFeesForFlat == null) * throw new SystemException("Nie ustawiono kosztów na to mieszkanie!"); * * DateTime currentDay = From; * int TotalDays = (Int32)(To - From).TotalDays; * * double sumForUser = 0; * * for(int i = 0; i <= TotalDays; i++) * { * double a = constFeesForFlat.SumOfConst(); * double b = (double)(DateTime.DaysInMonth(currentDay.Year, currentDay.Month)); * double c = CountUsersInFlat(flatId, currentDay); * sumForUser = sumForUser + (a /(b*c)); * currentDay = currentDay.AddDays(1); * } * * * * return Math.Round(sumForUser,2); * } */ public double TotalConstMoneyForOneLease(Lease lease) { ConstFees constFeesForFlat = CurrentConstFeeForFlat(lease.FlatsId, lease.To); if (constFeesForFlat == null) { throw new SystemException("Nie ustawiono kosztów na to mieszkanie!"); } DateTime currentDay = lease.From; int TotalDays = (Int32)(lease.To - lease.From).TotalDays; double sumForUser = 0; for (int i = 0; i <= TotalDays; i++) { sumForUser = sumForUser + (constFeesForFlat.SumOfConst() / ((double)(DateTime.DaysInMonth(currentDay.Year, currentDay.Month)) * CountUsersInFlat(lease.FlatsId, currentDay))); currentDay = currentDay.AddDays(1); } lease.ConstSum = Math.Round(sumForUser, 2); return(lease.ConstSum); }
public double TotalVarMoneyForOneLease(Lease lease) { double oldCold, oldHot, oldEnergy, oldGas; lease.CounterMiddleColdWater = lease.CounterStartColdWater; oldCold = lease.CounterStartColdWater; lease.CounterMiddleEnergy = lease.CounterStartEnergy; oldHot = lease.CounterStartEnergy; lease.CounterMiddleHotWater = lease.CounterStartHotWater; oldEnergy = lease.CounterStartHotWater; lease.CounterMiddleGas = lease.CounterStartGas; oldGas = lease.CounterStartGas; lease.DeltaColdWaterForThisUser = lease.DeltaEnergyForThisUser = lease.DeltaHotWaterForThisUser = lease.DeltaGasForThisUser = 0; ConstFees constFeesForFlat = CurrentConstFeeForFlat(lease.FlatsId, lease.To); if (constFeesForFlat == null) { throw new SystemException("Nie ustawiono kosztów na to mieszkanie!"); } DateTime currentDay = lease.From; int TotalDays = (Int32)(lease.To - lease.From).TotalDays; int usersInFlatInThisDay = 0; int usersInFlatInPreviousDay = 0; for (int i = 0; i <= TotalDays; i++) { List <Lease> leasesInDay = dbContext.Leases.Where(x => (x.FlatsId == lease.FlatsId) && (DbFunctions.TruncateTime(x.From) <= DbFunctions.TruncateTime(currentDay)) && (DbFunctions.TruncateTime(x.To) >= DbFunctions.TruncateTime(currentDay))).ToList <Lease>(); var unique_items = new HashSet <Lease>(leasesInDay); foreach (Lease l in unique_items) { if (i != 0 && l.From == currentDay) { lease.CounterMiddleColdWater = l.CounterStartColdWater; lease.CounterMiddleEnergy = l.CounterStartEnergy; lease.CounterMiddleHotWater = l.CounterStartHotWater; lease.CounterMiddleGas = l.CounterStartGas; lease.DeltaColdWaterForThisUser = lease.DeltaColdWaterForThisUser + ((lease.CounterMiddleColdWater - oldCold) / usersInFlatInPreviousDay); lease.DeltaEnergyForThisUser = lease.DeltaEnergyForThisUser + ((lease.CounterMiddleEnergy - oldEnergy) / usersInFlatInPreviousDay); lease.DeltaHotWaterForThisUser = lease.DeltaHotWaterForThisUser + ((lease.CounterMiddleHotWater - oldHot) / usersInFlatInPreviousDay); lease.DeltaGasForThisUser = lease.DeltaGasForThisUser + ((lease.CounterMiddleGas - oldGas) / usersInFlatInPreviousDay); oldCold = lease.CounterMiddleColdWater; oldEnergy = lease.CounterMiddleEnergy; oldHot = lease.CounterMiddleHotWater; oldGas = lease.CounterMiddleGas; } if (l.To == currentDay) { usersInFlatInThisDay = CountUsersInFlat(lease.FlatsId, currentDay); lease.CounterMiddleColdWater = l.CounterEndColdWater; lease.CounterMiddleEnergy = l.CounterEndEnergy; lease.CounterMiddleHotWater = l.CounterEndHotWater; lease.CounterMiddleGas = l.CounterStartGas; lease.DeltaColdWaterForThisUser = lease.DeltaColdWaterForThisUser + ((lease.CounterMiddleColdWater - oldCold) / usersInFlatInThisDay); lease.DeltaEnergyForThisUser = lease.DeltaEnergyForThisUser + ((lease.CounterMiddleEnergy - oldEnergy) / usersInFlatInThisDay); lease.DeltaHotWaterForThisUser = lease.DeltaHotWaterForThisUser + ((lease.CounterMiddleHotWater - oldHot) / usersInFlatInThisDay); lease.DeltaGasForThisUser = lease.DeltaGasForThisUser + ((lease.CounterMiddleGas - oldGas) / usersInFlatInPreviousDay); oldCold = lease.CounterMiddleColdWater; oldEnergy = lease.CounterMiddleEnergy; oldHot = lease.CounterMiddleHotWater; oldGas = lease.CounterMiddleGas; } } usersInFlatInPreviousDay = CountUsersInFlat(lease.FlatsId, currentDay); currentDay = currentDay.AddDays(1); } lease.VariablesSum = Math.Round((lease.DeltaColdWaterForThisUser * constFeesForFlat.ColdWaterValueForUnit + lease.DeltaEnergyForThisUser * constFeesForFlat.EnergyValueForUnit + lease.DeltaGasForThisUser * constFeesForFlat.GasValueForUnit + lease.DeltaHotWaterForThisUser * constFeesForFlat.HotWaterValueForUnit), 2); return(lease.VariablesSum); }