public async Task InsertAsync(CNWPaymentDTO dto)
 {
     using (var sql = dbConnectionFactory())
     {
         await sql.ExecuteAsync($@"{DapperHelper.INSERT(TABLE, DTOFIELDS)}", dto);
     }
 }
Esempio n. 2
0
        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);
                }
            }
        }