public async Task CurrentShift() { var ordersFulfilled = await _orderCarWashWorkers.SampleForPayroll(DateTime.Now); var DayClose = await _dayResult.DayResultViewInfo(); OrderCarWashWorkersBll orderCarWashWorkers = new OrderCarWashWorkersBll(); foreach (var itemShift in DayClose) { var resultShift = ordersFulfilled.Where(x => x.IdCarWashWorkers == itemShift.carWashWorkersId); foreach (var itemOrder in resultShift) { orderCarWashWorkers.Id = itemOrder.Id; orderCarWashWorkers.IdOrder = itemOrder.IdOrder; orderCarWashWorkers.IdCarWashWorkers = itemOrder.IdCarWashWorkers; orderCarWashWorkers.CalculationStatus = false; orderCarWashWorkers.Payroll = itemOrder.Payroll; orderCarWashWorkers.closedDayStatus = true; orderCarWashWorkers.typeServicesId = itemOrder.typeServicesId; await _orderCarWashWorkers.UpdateOrderCarWashWorkers(orderCarWashWorkers); } var resultCarWashWorkers = await _carWashWorkers.CarWashWorkersId(itemShift.carWashWorkersId); var InterestRate = (double)resultCarWashWorkers.InterestRate.Value / 100; if (resultCarWashWorkers.IdPosition >= 3) { await _bonusModules.PremiumAccrual(itemShift.carWashWorkersId, itemShift.payroll.Value / InterestRate); } else { var bonusAdmin = await _orderCarWashWorkers.SampleForPayroll(itemShift.carWashWorkersId, DateTime.Now); var test1 = bonusAdmin.Where(x => x.typeServicesId == 4).Sum(s => s.Payroll); var test2 = bonusAdmin.Where(x => x.typeServicesId == 6).Sum(s => s.Payroll); var test3 = bonusAdmin.Where(x => x.typeServicesId == 8).Sum(s => s.Payroll); var test4 = bonusAdmin.Where(x => x.typeServicesId == 10).Sum(s => s.Payroll); var result = test1 + test2 + test3 + test4; // await _bonusModules.PremiumAccrual(itemShift.carWashWorkersId, itemShift.payroll.Value / InterestRate); await _bonusModules.PremiumAccrual(itemShift.carWashWorkersId, result.Value / InterestRate); } } }
public List <OrderServicesCarWashBll> TotalSalaryForToday(int IdCarWashWorkers, int InterestRate) { var CompletedWork = _orderCarWash.SampleForPayroll(IdCarWashWorkers); List <int> idOrder = new List <int>(); foreach (var x in CompletedWork) { idOrder.Add(x.IdOrder.Value); } var allOrder = Mapper.Map <IEnumerable <OrderServicesCarWashBll> >(_unitOfWork.orderUnitiOfWork.QueryObjectGraph(x => idOrder.Contains(x.Id))); foreach (var x in allOrder) { orders.Add(new OrderServicesCarWashBll { Id = x.Id, IdClientsOfCarWash = x.IdClientsOfCarWash, OrderDate = x.OrderDate, ClosingData = x.ClosingData, DiscountPrice = x.DiscountPrice, TotalCostOfAllServices = PercentageOfOrder(InterestRate, x.DiscountPrice) }); } return(orders); }
public async Task CloseShift(int idPositionServises) { var position = await _position.ChoiceEmployees(idPositionServises); var ordersFulfilled = await _orderCarWashWorkers.SampleForPayroll(DateTime.Now); List <EmployeeDaySummary> employeeDaySummaryList = new List <EmployeeDaySummary>(); foreach (var item in ordersFulfilled.GroupBy(g => g.IdCarWashWorkers)) { var completedEmployeeOrders = ordersFulfilled.Where(x => x.IdCarWashWorkers == item.Key); var employees = await _premiumAndRate.SelectPosition(item.Key); List <EmployeeDaySummary> bonusList = new List <EmployeeDaySummary>(); foreach (var positionItem in position) { var resultEmployee = employees.SingleOrDefault(x => x.positionId == positionItem.idPosition); if (resultEmployee.servicePremium) { double sum = completedEmployeeOrders .Where(x => x.typeServicesId == positionItem.idPosition) .Sum(s => s.Payroll).Value; bonusList.Add(new EmployeeDaySummary { carWashWorkersId = item.Key, SumOrder = sum, percent = resultEmployee.multiplicityOfTheSum.Value, prizeAmount = resultEmployee.prizeAmount }); } } double prizeAmiutSum = bonusList.Sum(x => x.prizeAmount.Value); double percentSum = bonusList.Sum(x => x.percent.Value); double orderSum = bonusList.Sum(x => x.SumOrder.Value); int countServeses = bonusList.Count(); double averagePrize = Average(prizeAmiutSum, countServeses); double averagePercent = Average(percentSum, countServeses); double bonusResult = MathFloor(orderSum, averagePercent); if (bonusResult > 0) { BonusToSalaryBll bonusToSalary = new BonusToSalaryBll(); bonusToSalary.amount = bonusResult * averagePrize; bonusToSalary.carWashWorkersId = item.Key; bonusToSalary.date = DateTime.Now; await InsertTableBonus(bonusToSalary); } } }
public async Task <IEnumerable <WagesForDaysWorkedBll> > DayOrderResult(int?Id) => GroupOrderCarWashWorkers(await _orderCarWash.SampleForPayroll(Id));