public static IList <WorkOrder> GetOrdersByPhone(IUnitOfWork uow, string phone, int excludeId) { WorkOrderPay workOrderPayAlias = null; var query = uow.Session.QueryOver <WorkOrder>() .Where(x => x.Phone == phone) .Where(x => x.Id != excludeId) .OrderBy(x => x.Date).Desc .Fetch(SelectMode.Fetch, x => x.CarModel) .Fetch(SelectMode.Fetch, x => x.CarModel.Brand) //.Fetch(SelectMode.Fetch, x => x.Stock) .Fetch(SelectMode.Fetch, x => x.Manufacturer) .Fetch(SelectMode.Fetch, x => x.OrderState) .Future(); uow.Session.QueryOver <WorkOrder>() .Where(x => x.Phone == phone) .Where(x => x.Id != excludeId) .OrderBy(x => x.Date).Desc .Left.JoinAlias(x => x.Pays, () => workOrderPayAlias) .Fetch(SelectMode.Fetch, x => x.Pays) .Future(); return(query.ToList()); }
private WorkOrderPay getEmployeeServiceWorkforSave(object[] row, WorkOrderPay pay, int column) { var employeeService = pay.EmployeeServiceWork.FirstOrDefault(x => x.Employee.Id == listPerformers[column - 5].Id); if ((bool)row[column]) { if (employeeService == null) { pay.EmployeeServiceWork.Add(new EmployeeServiceWork(listPerformers[column - 5], pay, Entity.Date)); } } else if (employeeService != null) { pay.EmployeeServiceWork.Remove(employeeService); } return(pay); }
public static IList <WorkOrder> GetOrders(IUnitOfWork uow, DateTime?startDate, DateTime?endDate) { WorkOrderPay workOrderPayAlias = null; var query = CreateBaseQuery(uow, startDate, endDate) .Fetch(SelectMode.Fetch, x => x.CarModel) .Fetch(SelectMode.Fetch, x => x.CarModel.Brand) .Fetch(SelectMode.Fetch, x => x.Stock) .Fetch(SelectMode.Fetch, x => x.Manufacturer) .Fetch(SelectMode.Fetch, x => x.OrderState) .Future(); CreateBaseQuery(uow, startDate, endDate) .Left.JoinAlias(x => x.Pays, () => workOrderPayAlias) .Fetch(SelectMode.Fetch, x => x.Pays) .Future(); return(query.ToList()); }
private WorkOrderPay getPerformers(WorkOrderPay pay, object[] row) { if (listPerformers.Count > 0) { pay = getEmployeeServiceWorkforSave(row, pay, 5); } if (listPerformers.Count > 1) { pay = getEmployeeServiceWorkforSave(row, pay, 6); } if (listPerformers.Count > 2) { pay = getEmployeeServiceWorkforSave(row, pay, 7); } return(pay); }
void PrepareSave() { foreach (object[] row in ServiceListStore) { var pay = Entity.Pays.FirstOrDefault(x => x.Service.Id == (int)row[0]); if ((bool)row[1]) { if (pay == null) { pay = new WorkOrderPay(Entity, UoW.GetById <Service>((int)row[0])); Entity.Pays.Add(pay); } pay = getPerformers(pay, row); pay.Cost = Convert.ToDecimal(row[3]); } else if (pay != null) { Entity.Pays.Remove(pay); } } }
public void Calculate(DateTime start, DateTime end) { listEmployeeServiceSalaries.Clear(); using (IUnitOfWork uow = UnitOfWorkFactory.CreateWithoutRoot()) { EmployeeServiceWork employeeServiceWork = null; IList <EmployeeServiceWork> listEmployeeServiceWork; var listServiceDontCalculate = uow.Session.QueryOver <Service>().Where(x => x.ListServiceOrderType != null).List().Where(x => x.ListServiceOrderType.Count > 0).ToList() .Where(x => x.ListServiceOrderType[0].OrderTypeClass.IsCalculateSalary).ToList(); listEmployeeServiceWork = uow.Session.QueryOver <EmployeeServiceWork>(() => employeeServiceWork).Where(x => x.DateWork >= start && x.DateWork <= end).List(); if (listServiceDontCalculate != null) { listEmployeeServiceWork = listEmployeeServiceWork.Where(x => listServiceDontCalculate.Contains(x.WorkOrderPay.Service)).ToList(); } if (!checkServiceFormulas(listEmployeeServiceWork, uow)) { MessageDialogWorks.RunWarningDialog("Не для всех услуг указаны формулы расчета."); return; } foreach (var order in listEmployeeServiceWork) { EmployeeServiceSalary employeeServiceSalary = listEmployeeServiceSalaries.FirstOrDefault(x => x.Employee.Id == order.Employee.Id); if (employeeServiceSalary != null) { WorkOrderPay workOrderPay = uow.GetById <WorkOrderPay>(order.WorkOrderPay.Id); var employeeServiceWorkType = employeeServiceSalary.listEmployeeSalarySirviceType.FirstOrDefault(x => x.Service.Id == workOrderPay.Service.Id); if (employeeServiceWorkType != null) { foreach (var emp in listEmployeeServiceSalaries) { if (emp.Employee == order.Employee) { foreach (var service in emp.listEmployeeSalarySirviceType) { if (service.Service == order.WorkOrderPay.Service) { service.listCost.Add(getCost(order, listEmployeeServiceWork)); } } } } } else { EmployeeSalaryServiceType empServiceType = new EmployeeSalaryServiceType(order.WorkOrderPay.Service); empServiceType.listCost.Add(getCost(order, listEmployeeServiceWork)); empServiceType.Formula = getFormula(order, uow); foreach (var emp in listEmployeeServiceSalaries) { if (emp.Employee == order.Employee) { emp.listEmployeeSalarySirviceType.Add(empServiceType); } } } } else { Employee emp = uow.GetById <Employee>(order.Employee.Id); EmployeeServiceSalary empServiceSalary = new EmployeeServiceSalary(order.Employee); EmployeeSalaryServiceType empServiceType = new EmployeeSalaryServiceType(order.WorkOrderPay.Service); empServiceType.listCost.Add(getCost(order, listEmployeeServiceWork)); empServiceType.Formula = getFormula(order, uow); empServiceSalary.listEmployeeSalarySirviceType.Add(empServiceType); var r = empServiceType.SummaAfterFormula; listEmployeeServiceSalaries.Add(empServiceSalary); } } setData(); foreach (var row in listEmployeeServiceSalaries) { foreach (var service in row.listEmployeeSalarySirviceType) { service.Calculation(); } row.getAllSumma(); } } }