Example #1
0
        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());
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }
Example #4
0
        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);
        }
Example #5
0
        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();
                }
            }
        }