public void TakeOrderInWork(ChangeStatusBindingModel model)
        {
            lock (locker)
            {
                var order = orderLogic.Read(new OrderBindingModel {
                    Id = model.OrderId
                })?[0];
                if (order == null)
                {
                    throw new Exception("Не найден заказ");
                }
                if (order.Status != OrderStatus.Принят)
                {
                    throw new Exception("Заказ не в статусе \"Принят\"");
                }
                if (order.ImplementerId.HasValue)
                {
                    throw new Exception("Заказ выполняется другим исполнителем");
                }
                orderLogic.CreateOrUpdate(new OrderBindingModel
                {
                    Id            = order.Id,
                    ClientId      = order.ClientId,
                    ProductId     = order.ProductId,
                    ImplementerId = model.ImplementerId,
                    Count         = order.Count,
                    Sum           = order.Sum,
                    DateCreate    = order.DateCreate,
                    DateImplement = DateTime.Now,
                    Status        = OrderStatus.Выполняется
                });

                MailLogic.MailSendAsync(new MailSendInfo
                {
                    MailAddress = clientLogic.Read(new ClientBindingModel {
                        Id = order.ClientId
                    })?[0]?.Email,
                    Subject = $"Заказ №{order.Id}",
                    Text    = $"Заказ №{order.Id} передан в работу."
                });
            }
        }
        public void CreateOrder(CreateOrderBindingModel model)
        {
            orderLogic.CreateOrUpdate(new OrderBindingModel
            {
                ClientId   = model.ClientId,
                ProductId  = model.ProductId,
                Count      = model.Count,
                Sum        = model.Sum,
                DateCreate = DateTime.Now,
                Status     = OrderStatus.Принят
            });

            MailLogic.MailSendAsync(new MailSendInfo
            {
                MailAddress = clientLogic.Read(new ClientBindingModel {
                    Id = model.ClientId
                })?[0]?.Email,
                Subject = $"Новый заказ",
                Text    = $"Заказ принят."
            });
        }
        public void FinishOrder(ChangeStatusBindingModel model)
        {
            var order = orderLogic.Read(new OrderBindingModel {
                Id = model.OrderId
            })?[0];

            if (order == null)
            {
                throw new Exception("Не найден заказ");
            }
            if (order.Status != OrderStatus.Выполняется)
            {
                throw new Exception("Заказ не в статусе \"Выполняется\"");
            }
            if (order.ImplementerId != model.ImplementerId)
            {
                throw new Exception("Заказ выполняется другим исполнителем");
            }
            orderLogic.CreateOrUpdate(new OrderBindingModel
            {
                Id            = order.Id,
                ClientId      = order.ClientId,
                ProductId     = order.ProductId,
                ImplementerId = model.ImplementerId,
                Count         = order.Count,
                Sum           = order.Sum,
                DateCreate    = order.DateCreate,
                DateImplement = order.DateImplement,
                Status        = OrderStatus.Готов
            });

            MailLogic.MailSendAsync(new MailSendInfo
            {
                MailAddress = clientLogic.Read(new ClientBindingModel {
                    Id = order.ClientId
                })?[0]?.Email,
                Subject = $"Заказ №{order.Id}",
                Text    = $"Заказ №{order.Id} готов."
            });
        }
        public void PayOrder(ChangeStatusBindingModel model)
        {
            var order = orderLogic.Read(new OrderBindingModel {
                Id = model.OrderId
            })?[0];

            if (order == null)
            {
                throw new Exception("Не найден заказ");
            }
            if (order.Status != OrderStatus.Готов)
            {
                throw new Exception("Заказ не в статусе \"Готов\"");
            }
            orderLogic.CreateOrUpdate(new OrderBindingModel
            {
                Id            = order.Id,
                ClientId      = order.ClientId,
                ProductId     = order.ProductId,
                ImplementerId = order.ImplementerId,
                Count         = order.Count,
                Sum           = order.Sum,
                DateCreate    = order.DateCreate,
                DateImplement = order.DateImplement,
                Status        = OrderStatus.Оплачен
            });

            MailLogic.MailSendAsync(new MailSendInfo
            {
                MailAddress = clientLogic.Read(new ClientBindingModel {
                    Id = order.ClientId
                })?[0]?.Email,
                Subject = $"Заказ №{order.Id}",
                Text    = $"Заказ №{order.Id} оплачен."
            });
        }