Example #1
0
        private Request CreateModel(RequestBindingModel model, Request request, CTODatabase context)
        {
            request.ClientId    = model.ClientId;
            request.RequestName = model.RequestName;
            request.RequestCost = model.RequestCost;
            request.DateFrom    = model.DateFrom;
            request.DateTo      = model.DateTo;

            if (model.Id.HasValue)
            {
                var requestWorks = context.RequestWorks.Where(rec => rec.RequestId == model.Id.Value).ToList();
                context.RequestWorks.RemoveRange(requestWorks.Where(rec => !model.RequestWorks.ContainsKey(rec.WorkId)).ToList());
                context.SaveChanges();
                foreach (var updateComponent in requestWorks)
                {
                    model.RequestWorks.Remove(updateComponent.WorkId);
                }
                context.SaveChanges();
            }
            foreach (var pc in model.RequestWorks)
            {
                context.RequestWorks.Add(new RequestWork
                {
                    RequestId = request.Id,
                    WorkId    = pc.Key,
                });
                context.SaveChanges();
            }

            return(request);
        }
Example #2
0
 public RequestViewModel GetElement(RequestBindingModel model)
 {
     if (model == null)
     {
         return(null);
     }
     using (var context = new CTODatabase())
     {
         var request = context.Requests
                       .Include(rec => rec.RequestWorks)
                       .ThenInclude(rec => rec.Request)
                       .FirstOrDefault(rec => rec.RequestName == model.RequestName || rec.Id == model.Id);
         return(request != null ?
                new RequestViewModel
         {
             Id = request.Id,
             ClientId = request.ClientId,
             RequestName = request.RequestName,
             RequestCost = request.RequestCost,
             DateFrom = request.DateFrom,
             DateTo = request.DateTo,
         } :
                null);
     }
 }
Example #3
0
        public void Delete(RequestBindingModel model)
        {
            using (var context = new FlowerShopDatabase())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        context.RequestsFlowers.RemoveRange(context.RequestsFlowers.Where(rec => rec.RequestId == model.Id));
                        Request element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id);

                        if (element != null)
                        {
                            context.Requests.Remove(element);
                            context.SaveChanges();
                        }
                        else
                        {
                            CheckingElement(element);
                        }


                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
Example #4
0
 public void Delete(RequestBindingModel model)
 {
     using (var context = new KorytoDatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 context.DetailRequests.RemoveRange(context.DetailRequests.Where(rec => rec.RequestId == model.Id));
                 Request element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id);
                 if (element != null)
                 {
                     context.Requests.Remove(element);
                     context.SaveChanges();
                 }
                 else
                 {
                     throw new Exception("Элемент не найден");
                 }
                 transaction.Commit();
             }
             catch (Exception)
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
Example #5
0
 public void Update(RequestBindingModel model)
 {
     using (var context = new CTODatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 var element = context.Requests.Include(rec => rec.RequestWorks)
                               .ThenInclude(rec => rec.Work).FirstOrDefault(rec => rec.Id == model.Id);
                 if (element == null)
                 {
                     throw new Exception("Заявка не найдена");
                 }
                 CreateModel(model, element, context);
                 context.SaveChanges();
                 transaction.Commit();
             }
             catch
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
Example #6
0
 private Request CreateModel(RequestBindingModel model, Request request)
 {
     request.ClientId    = model.ClientId;
     request.RequestName = model.RequestName;
     request.RequestCost = model.RequestCost;
     request.DateFrom    = model.DateFrom;
     request.DateTo      = model.DateTo;
     return(request);
 }
Example #7
0
        public void Delete(RequestBindingModel model)
        {
            var element = _requestStorage.GetElement(new RequestBindingModel
            {
                Id = model.Id
            });

            if (element == null)
            {
                throw new Exception("Номер не найден");
            }
            _requestStorage.Delete(model);
        }
        public void AddElement(RequestBindingModel model)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    Request request = context.Requests.FirstOrDefault(rec => rec.Date == model.Date);
                    if (request != null)
                    {
                        throw new Exception("Такой запрос уже существует");
                    }

                    request = new Request
                    {
                        Price = model.Price,
                        Date  = model.Date
                    };
                    context.Requests.Add(request);
                    context.SaveChanges();

                    var groupProducts = model.RequestProducts
                                        .GroupBy(rec => rec.ProductId)
                                        .Select(rec => new
                    {
                        ProductId = rec.Key,
                        Count     = rec.Sum(r => r.Count)
                    }
                                                );

                    foreach (var groupProduct in groupProducts)
                    {
                        context.RequestProducts.Add(
                            new RequestProduct
                        {
                            RequestId = request.Id,
                            ProductId = groupProduct.ProductId,
                            Count     = groupProduct.Count
                        }
                            );
                        context.SaveChanges();
                    }
                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
 public List <RequestViewModel> Read(RequestBindingModel model)
 {
     if (model == null)
     {
         return(_requestStorage.GetFullList());
     }
     if (model.Id.HasValue)
     {
         return(new List <RequestViewModel> {
             _requestStorage.GetElement(model)
         });
     }
     return(_requestStorage.GetFilteredList(model));
 }
        public void AddElement(RequestBindingModel model)
        {
            using (var transaction = context.Database.BeginTransaction())
            {
                try
                {
                    var request = new Request
                    {
                        DateCreate = model.DateCreate
                    };

                    context.Requests.Add(request);
                    context.SaveChanges();

                    var groupDetails = model.DetailRequests
                                       .GroupBy(record => record.DetailId)
                                       .Select(record => new { detailId = record.Key, amount = record.Sum(r => r.Amount) });

                    foreach (var gr in groupDetails)
                    {
                        var detailRequest = new DetailRequest
                        {
                            RequestId = request.Id,
                            DetailId  = gr.detailId,
                            Amount    = gr.amount
                        };

                        context.DetailRequests.Add(detailRequest);
                        context.SaveChanges();

                        var updateDetail = context.Details.FirstOrDefault(record => record.Id == detailRequest.DetailId);

                        if (updateDetail == null)
                        {
                            continue;
                        }
                        updateDetail.TotalAmount += detailRequest.Amount;
                        context.SaveChanges();
                    }

                    transaction.Commit();
                }

                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Example #11
0
 public void Delete(RequestBindingModel model)
 {
     using (var context = new CTODatabase())
     {
         Request element = context.Requests.Include(rec => rec.RequestWorks)
                           .ThenInclude(rec => rec.Work).FirstOrDefault(rec => rec.Id == model.Id);
         if (element != null)
         {
             context.Requests.Remove(element);
             context.SaveChanges();
         }
         else
         {
             throw new Exception("Заявка не найдена");
         }
     }
 }
 public List <RequestViewModel> Read(RequestBindingModel model)
 {
     using (var context = new AbstractSweetShopDatabase())
     {
         return(context.Requests
                .Where(rec => model == null || rec.Id == model.Id ||
                       rec.DateRequest >= model.DateFrom && rec.DateRequest <= model.DateTo)
                .ToList()
                .Select(rec => new RequestViewModel
         {
             Id = rec.Id,
             DateRequest = rec.DateRequest,
             RequestProducts = context.RequestProducts
                               .Where(recPR => recPR.RequestId == rec.Id)
                               .ToDictionary(recPR => recPR.ProductId, recPR =>
                                             (context.Products.First(recP => recP.Id == recPR.ProductId).ProductName,
                                              recPR.Weight))
         })
 public bool Create(RequestBindingModel model)
 {
     using (var context = new AbstractSweetShopDatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 Request request = new Request
                 {
                     ClientId    = model.ClientId,
                     DateRequest = model.DateRequest
                 };
                 context.Requests.Add(request);
                 context.SaveChanges();
                 Product product;
                 foreach (var rp in model.RequestProducts)
                 {
                     product = context.Products.First(rec => rec.Id == rp.Key);
                     if (product.FillWeight <= rp.Value.Item2)
                     {
                         transaction.Rollback();
                         return(false);
                     }
                     product.FillWeight -= rp.Value.Item2;
                     context.RequestProducts.Add(new RequestProduct
                     {
                         RequestId = request.Id.Value,
                         ProductId = rp.Key,
                         Weight    = rp.Value.Item2
                     });
                     context.SaveChanges();
                 }
                 transaction.Commit();
                 return(true);
             }
             catch (Exception)
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
Example #14
0
 public List <RequestViewModel> Read(RequestBindingModel model)
 {
     using (var context = new KorytoDatabase())
     {
         return(context.Requests
                .Where(rec => model == null || rec.Id == model.Id ||
                       (model.DateFrom.HasValue && model.DateTo.HasValue && rec.DateCreate >= model.DateFrom && rec.DateCreate <= model.DateTo))
                .ToList()
                .Select(rec => new RequestViewModel
         {
             Id = rec.Id,
             RequestName = rec.RequestName,
             DateCreate = rec.DateCreate,
             DetailRequests = context.DetailRequests
                              .Include(recPC => recPC.Detail)
                              .Where(recPC => recPC.RequestId == rec.Id)
                              .ToDictionary(recPC => recPC.DetailId, recPC =>
                                            (recPC.Detail?.DetailName, recPC.Count))
         })
Example #15
0
 public List <RequestViewModel> Read(RequestBindingModel model)
 {
     using (var context = new FlowerShopDatabase())
     {
         return(context.Requests
                .Where(rec => model == null || rec.Id == model.Id || rec.DateCreate > model.DateFrom && rec.DateCreate < model.DateTo)
                .ToList()
                .Select(rec => new RequestViewModel
         {
             Id = rec.Id,
             RequestName = rec.RequestName,
             DateCreate = rec.DateCreate,
             RequestsFlowers = context.RequestsFlowers
                               .Include(recWC => recWC.Flower)
                               .Where(recWC => recWC.RequestId == rec.Id)
                               .ToDictionary(recWC => recWC.FlowerId, recWC => (
                                                 recWC.Flower?.FlowerName, recWC.Count
                                                 ))
         })
Example #16
0
 public List <RequestViewModel> GetFilteredList(RequestBindingModel model)
 {
     if (model == null)
     {
         return(null);
     }
     using (var context = new CTODatabase())
     {
         return(context.Requests
                .Include(rec => rec.RequestWorks)
                .ThenInclude(rec => rec.Work)
                .Include(rec => rec.Client)
                .Include(rec => rec.RequestCosts)
                .ThenInclude(rec => rec.Cost)
                .Where(rec => model.DateFrom.HasValue && model.DateTo.HasValue && rec.ClientId == model.ClientId ||
                       !model.DateFrom.HasValue && !model.DateTo.HasValue && rec.ClientId == model.ClientId)
                .Select(CreateViewModel)
                .ToList());
     }
 }
Example #17
0
 public void Insert(RequestBindingModel model)
 {
     using (var context = new CTODatabase())
     {
         using (var transaction = context.Database.BeginTransaction())
         {
             try
             {
                 Request request = CreateModel(model, new Request());
                 context.Requests.Add(request);
                 context.SaveChanges();
                 CreateModel(model, request, context);
                 transaction.Commit();
             }
             catch
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }
        public void CreateOrder(RequestBindingModel model)
        {
            int maxId = 0;

            for (int i = 0; i < source.Requests.Count; ++i)
            {
                if (source.Requests[i].Id > maxId)
                {
                    maxId = source.Customers[i].Id;
                }
            }
            source.Requests.Add(new Request
            {
                Id         = maxId + 1,
                CustomerId = model.CustomerId,
                ArticleId  = model.ArticleId,
                DateCreate = DateTime.Now,
                Count      = model.Count,
                Sum        = model.Sum,
                Status     = RequestStatus.Принят
            });
        }
Example #19
0
        public void CreateOrUpdate(RequestBindingModel model)
        {
            using (var context = new FlowerShopDatabase())
            {
                Request element = context.Requests.FirstOrDefault(rec => rec.RequestName == model.RequestName && rec.Id != model.Id);
                if (model.Id.HasValue)
                {
                    element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id);
                    CheckingElement(element);
                }
                else
                {
                    element = new Request();
                    context.Requests.Add(element);
                }

                element.RequestName = model.RequestName;
                element.DateCreate  = model.DateCreate;

                context.SaveChanges();
            }
        }
Example #20
0
 public void DeleteRequest(RequestBindingModel model) => _main.Delete(model);
Example #21
0
 public void UpdateRequest(RequestBindingModel model) => _main.UpdateRequest(model);
Example #22
0
 public void CreateRequest(RequestBindingModel model) => _main.CreateRequest(model);
Example #23
0
 public void CreateRequest(RequestBindingModel model)
 {
     _requestStorage.Insert(model);
 }
Example #24
0
 public void UpdateRequest(RequestBindingModel model)
 {
     _requestStorage.Update(model);
 }
        public void TakeOrderInWork(RequestBindingModel model)
        {
            int index = -1;

            for (int i = 0; i < source.Requests.Count; ++i)
            {
                if (source.Requests[i].Id == model.Id)
                {
                    index = i;
                    break;
                }
            }
            if (index == -1)
            {
                throw new Exception("Элемент не найден");
            }
            // смотрим по количеству компонентов на складах
            for (int i = 0; i < source.ArticleIngridients.Count; ++i)
            {
                if (source.ArticleIngridients[i].ArticleId == source.Requests[index].ArticleId)
                {
                    int countOnStocks = 0;
                    for (int j = 0; j < source.ResourceIngridients.Count; ++j)
                    {
                        if (source.ResourceIngridients[j].IngridientId == source.ArticleIngridients[i].IngridientId)
                        {
                            countOnStocks += source.ResourceIngridients[j].Count;
                        }
                    }
                    if (countOnStocks < source.ArticleIngridients[i].Count * source.Requests[index].Count)
                    {
                        for (int j = 0; j < source.Ingridients.Count; ++j)
                        {
                            if (source.Ingridients[j].Id == source.ArticleIngridients[i].IngridientId)
                            {
                                throw new Exception("Не достаточно компонента " + source.Ingridients[j].IngridientName +
                                                    " требуется " + source.ArticleIngridients[i].Count + ", в наличии " + countOnStocks);
                            }
                        }
                    }
                }
            }
            // списываем
            for (int i = 0; i < source.ArticleIngridients.Count; ++i)
            {
                if (source.ArticleIngridients[i].ArticleId == source.Requests[index].ArticleId)
                {
                    int countOnStocks = source.ArticleIngridients[i].Count * source.Requests[index].Count;
                    for (int j = 0; j < source.ResourceIngridients.Count; ++j)
                    {
                        if (source.ResourceIngridients[j].IngridientId == source.ArticleIngridients[i].IngridientId)
                        {
                            // компонентов на одном слкаде может не хватать
                            if (source.ResourceIngridients[j].Count >= countOnStocks)
                            {
                                source.ResourceIngridients[j].Count -= countOnStocks;
                                break;
                            }
                            else
                            {
                                countOnStocks -= source.ResourceIngridients[j].Count;
                                source.ResourceIngridients[j].Count = 0;
                            }
                        }
                    }
                }
            }
            source.Requests[index].WorkerId      = model.WorkerId;
            source.Requests[index].DateImplement = DateTime.Now;
            source.Requests[index].Status        = RequestStatus.Выполняется;
        }
Example #26
0
 public void ChangeRequestStatus(RequestBindingModel model) => _request.CreateOrUpdate(model);
Example #27
0
        public void CreateOrUpdate(RequestBindingModel model)
        {
            using (var context = new KorytoDatabase())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        Request element = context.Requests.FirstOrDefault(rec => rec.RequestName == model.RequestName && rec.Id != model.Id);
                        if (element != null)
                        {
                            throw new Exception("Уже есть заявка с таким названием");
                        }
                        if (model.Id.HasValue)
                        {
                            element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id);
                            if (element == null)
                            {
                                throw new Exception("Элемент не найден");
                            }
                        }
                        else
                        {
                            element = new Request();
                            context.Requests.Add(element);
                        }
                        element.RequestName = model.RequestName;
                        element.DateCreate  = model.DateCreate;

                        context.SaveChanges();

                        if (model.Id.HasValue)
                        {
                            var DetailRequests = context.DetailRequests.Where(rec
                                                                              => rec.RequestId == model.Id.Value).ToList();
                            context.DetailRequests.RemoveRange(DetailRequests.Where(rec =>
                                                                                    !model.DetailRequests.ContainsKey(rec.DetailId)).ToList());
                            context.SaveChanges();
                            foreach (var updateDetail in DetailRequests)
                            {
                                updateDetail.Count = model.DetailRequests[updateDetail.DetailId].Item2;

                                model.DetailRequests.Remove(updateDetail.DetailId);
                            }
                            context.SaveChanges();
                        }
                        foreach (var pc in model.DetailRequests)
                        {
                            context.DetailRequests.Add(new DetailRequest
                            {
                                RequestId = element.Id,
                                DetailId  = pc.Key,
                                Count     = pc.Value.Item2
                            });
                            context.SaveChanges();
                        }
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }