public async Task <ActionResult> AddOrderCarpetWashing([Bind(Include = "idOrderCarpetWashing,orderServicesCarWashId,clientId,area,orderDate,orderClosingDate,orderCompletionDate")] OrderCarpetWashingView orderCarpetWashingView,
                                                               List <string> idBrigade, int?idPaymentState, int?clientId, bool chooseEmployee = false)

        {
            if (clientId != null && TempData["priseServis"] != null)
            {
                int priceServis = Convert.ToInt32(TempData["priseServis"].ToString());
                orderCarpetWashingView.clientId  = clientId;
                orderCarpetWashingView.orderDate = DateTime.Now;

                OrderCarpetWashingBll orderCarpetWashing = Mapper.Map <OrderCarpetWashingView, OrderCarpetWashingBll>(orderCarpetWashingView);

                int resultOrderServicesCarWash = await _order.OrderForCarpetCleaning(orderCarpetWashing, idPaymentState, priceServis, clientId.Value);

                orderCarpetWashing.orderServicesCarWashId = resultOrderServicesCarWash;

                await _orderCarpetWashingServices.Insert(orderCarpetWashing);

                return(RedirectToAction("OrderCarpetWashing", "OrderCarpetWashing"));
            }

            var brigadeForToday     = Mapper.Map <IEnumerable <BrigadeForTodayView> >(await _brigadeForToday.GetDateTimeNow());
            var resultServisesPrice = Mapper.Map <DetailingsView>(await _detailings.GetId(87));

            TempData["priseServis"] = resultServisesPrice.S;

            ViewBag.Adninistrator = brigadeForToday.Where(x => x.StatusId < 3);

            ViewBag.Brigade  = Mapper.Map <IEnumerable <CarWashWorkersView> >(await _employeesFacade.ListOfEmployeesForService(3));
            ViewBag.Servises = resultServisesPrice;

            return(View(orderCarpetWashingView));
        }
        // GET: OrderCarpetWashing/Details/5
        public async Task <ActionResult> DetailsOrderCarpetWashing(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            OrderCarpetWashingView orderCarpetWashingView = Mapper.Map <OrderCarpetWashingView>(await _orderCarpetWashingServices.SelectId(id));

            if (orderCarpetWashingView == null)
            {
                return(HttpNotFound());
            }
            return(View(orderCarpetWashingView));
        }
        private async Task <int> EditOrderCarpetWashing(int id, int idPage, int PaymentState)
        {
            OrderCarpetWashingView orderCarpetWashingGet = Mapper.Map <OrderCarpetWashingView>(await _orderCarpetWashingServices.SelectId(id));

            if (PaymentState == 3)
            {
                orderCarpetWashingGet.orderCompletionDate = DateTime.Now;
            }
            else
            {
                orderCarpetWashingGet.orderCompletionDate = DateTime.Now;
                orderCarpetWashingGet.orderClosingDate    = DateTime.Now;
            }

            OrderCarpetWashingBll orderCarpet = Mapper.Map <OrderCarpetWashingView, OrderCarpetWashingBll>(orderCarpetWashingGet);
            await _orderCarpetWashingServices.Update(orderCarpet);

            return(orderCarpetWashingGet.orderServicesCarWashId);
        }
        // GET: OrderCarpetWashing/Edit/5
        public async Task <ActionResult> AboutOrder(int?idOrder, int?idClient, int?idPage)
        {
            if (idClient == null && idOrder == null)
            {
                var httpstatusCode = new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                return(RedirectToAction("OrderCarpetWashing"));
            }

            OrderCarpetWashingView orderCarpetWashingView = Mapper.Map <OrderCarpetWashingView>(await _orderCarpetWashingServices.SelectId(idOrder));
            ClientInfoView         clientInfoView         = Mapper.Map <ClientInfoView>(await _clientInfo.ClientInfoGetId(idClient));

            var brigadeForToday = Mapper.Map <IEnumerable <BrigadeForTodayView> >(await _brigadeForToday.GetDateTimeNow());
            var orderServices   = Mapper.Map <OrderServicesCarWashView>(await _orderServicesCarWash.GetId(orderCarpetWashingView.orderServicesCarWashId));
            var test            = orderServices.OrderCarWashWorkers.FirstOrDefault(x => x.IdOrder == orderCarpetWashingView.orderServicesCarWashId);
            var getAllAdminDay  = Mapper.Map <IEnumerable <CarWashWorkersView> >(await _employeesFacade.ListOfEmployeesForService());

            ViewBag.Brigade      = Mapper.Map <IEnumerable <CarWashWorkersView> >(await _employeesFacade.ListOfEmployeesForService(3));
            ViewBag.Sum          = orderServices.DiscountPrice;
            ViewBag.BrigateOrder = test;
            ViewBag.ResultPay    = orderServices.PaymentState;

            ViewBag.TeamLead     = new SelectList(getAllAdminDay.Where(x => x.IdPosition <= 2), "id", "Name");
            ViewBag.Adminstrator = new SelectList(getAllAdminDay.Where(x => x.IdPosition == 4), "id", "Name");

            ViewBag.IdPage     = idPage;
            ViewBag.ClientInfo = clientInfoView;

            var paymentSate = Mapper.Map <IEnumerable <PaymentStateView> >(await _paymentState.GetTableAll());

            ViewBag.PaymentState       = new SelectList(paymentSate, "Id", "PaymentState1");
            ViewBag.PaymentStateResult = orderServices.PaymentState;
            ViewBag.ClientId           = idClient;

            if (orderCarpetWashingView == null)
            {
                return(HttpNotFound());
            }

            return(View(orderCarpetWashingView));
        }
        public async Task <ActionResult> AboutOrder([Bind(Include = "orderCompletionDate")] OrderCarpetWashingView orderCarpetWashingView, int idOrderServis,
                                                    int idOrder, int?idPage, int?PaymentStateList, int?idClient, List <string> idBrigade = null, int?idAdmin = null, int?idTeamLead = null, bool orderDelete = false)
        {
            if (orderDelete)
            {
                await _orderServicesCarWash.DeleteOrder(idOrderServis);

                return(RedirectToAction("OrderCarpetWashing"));
            }

            if (idPage == 2)
            {
                if (PaymentStateList == 3)
                {
                    if (idBrigade != null && idTeamLead != null)
                    {
                        int idOrderServices = await EditOrderCarpetWashing(idOrder, idPage.Value, PaymentStateList.Value);

                        var order = await _orderServicesCarWash.GetId(idOrderServices);

                        if (idAdmin != null)
                        {
                            // Начисление заработной платы Администраору
                            await _wageModules.AdminWage(order, (int)TypeService.Sales, idAdmin.Value);
                        }

                        // Наичление заработной платы Тим лидеру
                        await _wageModules.AdminWage(order, (int)TypeService.CarpetCleaning, idTeamLead.Value);

                        // Начисление заработной платы сотрудникам
                        await _wageModules.Payroll(order, _wageModules.ConvertListToIEnumerable(idBrigade), (int)TypeService.CarpetCleaning);

                        OrderServicesCarWashView orderServices = Mapper.Map <OrderServicesCarWashView>(await _orderServicesCarWash.GetId(idOrderServices));
                        orderServices.PaymentState = PaymentStateList;
                        orderServices.StatusOrder  = (int)StatusOrder.AwaitingPayment;

                        if (orderServices.ClosingData == null)
                        {
                            orderServices.ClosingData = DateTime.Now;
                        }

                        await SaveOrderServices(orderServices);
                    }
                    else
                    {
                        int idOrderServices = await EditOrderCarpetWashing(idOrder, idPage.Value, PaymentStateList.Value);

                        OrderServicesCarWashView orderServices = Mapper.Map <OrderServicesCarWashView>(await _orderServicesCarWash.GetId(idOrderServices));
                        orderServices.PaymentState = PaymentStateList;
                        orderServices.StatusOrder  = (int)StatusOrder.AwaitingPayment;

                        if (orderServices.ClosingData == null)
                        {
                            orderServices.ClosingData = DateTime.Now;
                        }

                        await SaveOrderServices(orderServices);
                    }
                }
                else if (PaymentStateList == 1 || PaymentStateList == 2)
                {
                    if (idBrigade != null && idTeamLead != null)
                    {
                        int idOrderServices = await EditOrderCarpetWashing(idOrder, idPage.Value, PaymentStateList.Value);

                        var order = await _orderServicesCarWash.GetId(idOrderServices);

                        if (idAdmin != null)
                        {
                            // Начисление заработной платы Администраору
                            await _wageModules.AdminWage(order, (int)TypeService.Sales, idAdmin.Value);
                        }

                        // Наичление заработной платы Тим лидеру
                        await _wageModules.AdminWage(order, (int)TypeService.CarpetCleaning, idTeamLead.Value);

                        // Начисление заработной платы сотрудникам
                        await _wageModules.Payroll(order, _wageModules.ConvertListToIEnumerable(idBrigade), (int)TypeService.CarpetCleaning);

                        OrderServicesCarWashView orderServices = Mapper.Map <OrderServicesCarWashView>(await _orderServicesCarWash.GetId(idOrderServices));
                        orderServices.PaymentState = PaymentStateList;
                        orderServices.StatusOrder  = (int)StatusOrder.Completed;

                        if (orderServices.ClosingData == null)
                        {
                            orderServices.ClosingData = DateTime.Now;
                        }

                        await SaveOrderServices(orderServices);
                    }
                    else
                    {
                        int idOrderServices = await EditOrderCarpetWashing(idOrder, idPage.Value, PaymentStateList.Value);

                        OrderServicesCarWashView orderServices = Mapper.Map <OrderServicesCarWashView>(await _orderServicesCarWash.GetId(idOrderServices));
                        orderServices.PaymentState = PaymentStateList;
                        orderServices.StatusOrder  = (int)StatusOrder.Completed;

                        if (orderServices.ClosingData == null)
                        {
                            orderServices.ClosingData = DateTime.Now;
                        }

                        await SaveOrderServices(orderServices);
                    }
                }
                else
                {
                    return(RedirectToAction("AboutOrder", "OrderCarpetWashing", new RouteValueDictionary(new
                    {
                        idOrder = idOrder,
                        idClient = idClient,
                        idPage = idPage
                    })));
                }
            }

            return(RedirectToAction("OrderCarpetWashing"));
        }