public async Task InsertAsync(CNWPaymentDTO dto) { using (var sql = dbConnectionFactory()) { await sql.ExecuteAsync($@"{DapperHelper.INSERT(TABLE, DTOFIELDS)}", dto); } }
public async Task SyncWeekPeriodAsync(int weekNo, bool resync = false) { // here we want to sync week period if it does not exist and if we have already started the next weeks route. var weekPaymentSummaryExists = await cnwPaymentsRepository.WeekPaymentSummaryExists(weekNo); var routes = await cnwRoutesRepository.GetAllAsync(weekNo); var nextWeekRoutes = await cnwRoutesRepository.GetAllAsync(weekNo + 1); // if re-syncing then delete if (weekPaymentSummaryExists && resync) { await cnwPaymentsRepository.DeleteAsync(weekNo); } if (!weekPaymentSummaryExists && nextWeekRoutes != null && nextWeekRoutes.Any()) { var rates = await cnwRatesRepository.GetAsync(); if (routes != null && routes.Any()) { var fullRoutePay = rates.FullRoute * routes.Count(x => x.RouteTypeId == Categories.Full); var halfRoutePay = rates.HalfRoute * routes.Count(x => x.RouteTypeId == Categories.Half); var missortRoutePay = rates.MissortRoute * routes.Count(x => x.RouteTypeId == Categories.Missort); var supportDrops = routes.Sum(x => x.ExtraDrops) ?? 0; var firstWeekDate = routes.OrderBy(x => x.RouteDate).Select(x => x.RouteDate).FirstOrDefault(); var model = new CNWPaymentDTO { Routes = routes.Count(), CalcMiles = routes.Sum(x => x.Mileage), CalcSupportMiles = routes.Sum(x => x.ExtraMileage) ?? 0, CalcSupportDrops = supportDrops, CalcRoutePay = fullRoutePay + halfRoutePay + missortRoutePay, AverageMpg = routes.Average(x => x.Mpg), WeekDate = firstWeekDate, DeduFuel = routes.Sum(x => x.CoFuel) ?? 0 }; model.CalcMileagePay = rates.Mileage * (model.CalcMiles + model.CalcSupportMiles); model.CalcSupportMileagePay = rates.Mileage * model.CalcSupportMiles; model.CalcTotalPay = model.CalcRoutePay + model.CalcMileagePay; model.CalcSupportPay = supportDrops + model.CalcSupportMileagePay; await cnwPaymentsRepository.InsertAsync(model); } } }