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); }
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); } }
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; } } } }
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; } } } }
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; } } } }
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); }
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; } } }
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; } } } }
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)) })
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 )) })
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()); } }
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.Принят }); }
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(); } }
public void DeleteRequest(RequestBindingModel model) => _main.Delete(model);
public void UpdateRequest(RequestBindingModel model) => _main.UpdateRequest(model);
public void CreateRequest(RequestBindingModel model) => _main.CreateRequest(model);
public void CreateRequest(RequestBindingModel model) { _requestStorage.Insert(model); }
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.Выполняется; }
public void ChangeRequestStatus(RequestBindingModel model) => _request.CreateOrUpdate(model);
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; } } } }