public void Create(ServiceBindingModel model) { try { int?maxId = null; using (var command = new NpgsqlCommand("select max(id) from field_medicine", source.npgsqlConnection)) { var reader = command.ExecuteReader(); reader.Read(); maxId = reader.GetInt32(0); reader.Close(); } if (!maxId.HasValue) { maxId = 400; } using (var command = new NpgsqlCommand("INSERT INTO service (id, field_id, name, price) VALUES (@id, @field_id, @name, @price)", source.npgsqlConnection)) { command.Parameters.AddWithValue("id", maxId + 1); command.Parameters.AddWithValue("field_id", model.FieldId); command.Parameters.AddWithValue("name", model.ServiceName); command.Parameters.AddWithValue("price", model.Price); command.ExecuteNonQuery(); } } catch (Exception) { throw; } }
public void CreateOrUpdate(ServiceBindingModel model) { using (var context = new Database()) { Service tempService = model.Id.HasValue ? null : new Service(); if (model.Id.HasValue) { tempService = context.Services.FirstOrDefault(rec => rec.Id == model.Id); } if (model.Id.HasValue) { if (tempService == null) { throw new Exception("Элемент не найден"); } CreateModel(model, tempService); } else { context.Services.Add(CreateModel(model, tempService)); } context.SaveChanges(); } }
public void AddElement(ServiceBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Service element = context.Services.FirstOrDefault(rec => rec.serviceName == model.serviceName); if (element != null) { throw new Exception("Уже есть услуга с таким названием"); } element = new Service { serviceName = model.serviceName, price = model.price }; context.Services.Add(element); try { context.SaveChanges(); } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { Console.Write("Object: " + validationError.Entry.Entity.ToString()); Console.Write(" "); foreach (DbValidationError err in validationError.ValidationErrors) { Console.Write(err.ErrorMessage + " "); } } } var groupComponents = model.serviceResources .GroupBy(rec => rec.resourceId) .Select(rec => new { resourceId = rec.Key, count = rec.Sum(r => r.count) }); foreach (var groupComponent in groupComponents) { context.ServiceResources.Add(new ServiceResource { serviceId = element.id, resourceId = groupComponent.resourceId, count = groupComponent.count }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void AddElement(ServiceBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { //Service element = context.Services.FirstOrDefault(rec => //rec.ServiceName == model.ServiceName); //if (element != null) //{ // throw new Exception("Уже есть услуга с таким названием"); //} //foreach (var resourse in model.ServiceResourses) //{ // int countOnStocks = resourse.Count; // //var skladElements = от Марины // foreach (var skladElement in skladElements) // { // // компонентов на одном слкаде может не хватать // if (skladElement.Count >= countOnStocks) // { // skladElement.Count -= countOnStocks; // countOnStocks = 0; // context.SaveChanges(); // break; // } // else // { // countOnStocks -= skladElement.Count; // skladElement.Count = 0; // context.SaveChanges(); // } // } // if (countOnStocks > 0) // { // throw new Exception("Не достаточно ресурсов " + // outputElement.Resourse.ResourseName + " требуется " + outputElement.Count + ", не хватает " + countOnStocks); // } //} //element = new Service //{ // ServiceName = model.ServiceName //}; //context.Services.Add(element); //context.SaveChanges(); transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
private Service CreateModel(ServiceBindingModel model, Service product) { using (var context = new Database()) { product.ServiceName = model.ServiceName; product.Desc = model.Desc; product.Price = model.Price; return(product); } }
public List <ServiceViewModel> Read(ServiceBindingModel model) { SaveToDatabase(); return(Services .Where(rec => model == null || rec.Id == model.Id) .Select(rec => new ServiceViewModel { Id = rec.Id, ServiceName = rec.ServiceName, Price = rec.Price }) .ToList()); }
public async Task Update_ReturnNotFoundAfterNotFoundException() { Service service = GetService(); ServiceBindingModel model = GetModel(); // Arrange unitOfWorkMock.Setup(x => x.ServiceRepository.UpdateAsync(It.IsAny <Service>())).ThrowsAsync(new ItemNotFoundException()); // Act IHttpActionResult result = await controller.Update(model); // Assert Assert.IsInstanceOfType(result, typeof(NotFoundResult)); }
public void Delete(ServiceBindingModel model) { try { using (var command = new NpgsqlCommand("DELETE FROM service WHERE id = @id", source.npgsqlConnection)) { command.Parameters.AddWithValue("id", model.Id); command.ExecuteNonQuery(); } } catch (Exception) { throw; } }
public void Update(ServiceBindingModel model) { try { using (var command = new NpgsqlCommand("UPDATE service SET name=@name, price=@price WHERE id = @id", source.npgsqlConnection)) { command.Parameters.AddWithValue("name", model.ServiceName); command.Parameters.AddWithValue("price", model.Price); command.Parameters.AddWithValue("id", model.Id); command.ExecuteNonQuery(); } } catch (Exception) { throw; } }
public void Delete(ServiceBindingModel model) { using (var context = new Database()) { Service element = context.Services.FirstOrDefault(rec => rec.Id == model.Id.Value); if (element != null) { context.Services.Remove(element); context.SaveChanges(); } else { throw new Exception("Элемент не найден"); } } }
public void AddElement(ServiceBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Service element = context.Services.FirstOrDefault(rec => rec.ServiceName == model.ServiceName); if (element != null) { throw new Exception("Уже есть услуга с таким названием"); } element = new Service { ServiceName = model.ServiceName, Price = model.Price }; context.Services.Add(element); context.SaveChanges(); var groupDrugs = model.ServiceDrugs .GroupBy(rec => rec.DrugId) .Select(rec => new { DrugId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupIngredient in groupDrugs) { context.ServiceDrugs.Add(new ServiceDrug { ServiceId = element.Id, DrugId = groupIngredient.DrugId, Count = groupIngredient.Count }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public ServiceViewModel Read(ServiceBindingModel model) { ServiceViewModel service; using (var command = new NpgsqlCommand($"SELECT id, name, price FROM service WHERE id={model.Id}", source.npgsqlConnection)) { var reader = command.ExecuteReader(); reader.Read(); service = new ServiceViewModel { Id = reader.GetInt32(0), ServiceName = reader.GetString(1), Price = reader.GetInt32(2) }; reader.Close(); } return(service); }
public async Task <IHttpActionResult> Add(ServiceBindingModel model) { Service service = _mapper.Map <Service>(model); int result; try { _unitOfWork.ServiceRepository.Add(service); result = await _unitOfWork.CompleteAsync(); } catch (Exception e) { _logger.Error(e); return(InternalServerError()); } var mapedEntity = _mapper.Map <ServiceBindingModel>(service); return(Created("Created successfull", mapedEntity)); }
public List <ServiceViewModel> Read(ServiceBindingModel model) { using (var context = new Database()) { List <ServiceViewModel> result = new List <ServiceViewModel>(); if (model != null) { result.AddRange(context.Services .Where(rec => rec.Id == model.Id || rec.ServiceName == model.ServiceName || (model.ServiceName == null && model.Id == null)) .Select(rec => CreateViewModel(rec))); } else { result.AddRange(context.Services.Select(rec => CreateViewModel(rec))); } return(result); } }
public async Task Add_ReturnOkResultWithAddedServiceAsContent() { Service service = GetService(); ServiceBindingModel model = GetModel(); // Arrange unitOfWorkMock.Setup(x => x.ServiceRepository.Add(service)).Returns(service); unitOfWorkMock.Setup(x => x.CompleteAsync()).ReturnsAsync(1); mapperMock.Setup(x => x.Map <ServiceBindingModel>(It.IsAny <Service>())).Returns(model); // Act IHttpActionResult result = await controller.Add(model); var contentResult = result as CreatedNegotiatedContentResult <ServiceBindingModel>; // Assert Assert.IsNotNull(contentResult); Assert.IsNotNull(contentResult.Content); Assert.AreEqual(contentResult.Content.Id, service.Id); }
public async Task Update_ReturnOkWithCorretcServiceId() { // Arrange Service service = GetService(); ServiceBindingModel model = GetModel(); unitOfWorkMock.Setup(x => x.ServiceRepository.UpdateAsync(service)).ReturnsAsync(service); unitOfWorkMock.Setup(x => x.CompleteAsync()).ReturnsAsync(1); // Acr IHttpActionResult result = await controller.Update(model); var contentResult = result as NegotiatedContentResult <ServiceBindingModel>; //Assert Assert.IsNotNull(contentResult); Assert.AreEqual(HttpStatusCode.Accepted, contentResult.StatusCode); Assert.IsNotNull(contentResult.Content); Assert.AreEqual(service.Id, contentResult.Content.Id); }
public async Task <IHttpActionResult> Update(ServiceBindingModel model) { Service service = _mapper.Map <Service>(model); try { await _unitOfWork.ServiceRepository.UpdateAsync(service); await _unitOfWork.CompleteAsync(); } catch (ItemNotFoundException e) { return(NotFound()); } catch (Exception e) { _logger.Error(e); return(InternalServerError()); } return(Content(HttpStatusCode.Accepted, model)); }
public void UpdElement(ServiceBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Service element = context.Services.FirstOrDefault(rec => rec.ServiceName == model.ServiceName && rec.Id != model.Id); if (element != null) { throw new Exception("Уже есть услуга с таким названием"); } element = context.Services.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } element.ServiceName = model.ServiceName; element.Price = model.Price; context.SaveChanges(); var drugsIds = model.ServiceDrugs.Select(rec => rec.DrugId).Distinct(); var updateDrugs = context.ServiceDrugs .Where(rec => rec.ServiceId == model.Id && drugsIds.Contains(rec.DrugId)); foreach (var updateDrug in updateDrugs) { updateDrug.Count = model.ServiceDrugs .FirstOrDefault(rec => rec.Id == updateDrug.Id).Count; } context.SaveChanges(); context.ServiceDrugs.RemoveRange( context.ServiceDrugs.Where(rec => rec.ServiceId == model.Id && !drugsIds.Contains(rec.DrugId))); context.SaveChanges(); var groupDrugs = model.ServiceDrugs .Where(rec => rec.Id == 0) .GroupBy(rec => rec.DrugId) .Select(rec => new { DrugId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupDrug in groupDrugs) { ServiceDrug elementPC = context.ServiceDrugs .FirstOrDefault(rec => rec.ServiceId == model.Id && rec.DrugId == groupDrug.DrugId); if (elementPC != null) { elementPC.Count += groupDrug.Count; context.SaveChanges(); } else { context.ServiceDrugs.Add(new ServiceDrug { ServiceId = model.Id, DrugId = groupDrug.DrugId, Count = groupDrug.Count }); context.SaveChanges(); } } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void UpdElement(ServiceBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Service element = context.Services.FirstOrDefault(rec => rec.serviceName == model.serviceName /*&& rec.id != model.id*/); if (element != null) { throw new Exception("Уже есть услуга с таким названием"); } element = context.Services.FirstOrDefault(rec => rec.id == model.id); if (element == null) { throw new Exception("Элемент не найден"); } element.serviceName = model.serviceName; element.price = model.price; context.SaveChanges(); var compIds = model.serviceResources.Select(rec => rec.resourceId).Distinct(); var updateComponents = context.ServiceResources .Where(rec => rec.serviceId == model.id && compIds.Contains(rec.resourceId)); foreach (var updateComponent in updateComponents) { updateComponent.count = model.serviceResources .FirstOrDefault(rec => rec.id == updateComponent.id).count; } context.SaveChanges(); context.ServiceResources.RemoveRange( context.ServiceResources.Where(rec => rec.serviceId == model.id && !compIds.Contains(rec.serviceId))); context.SaveChanges(); var groupComponents = model.serviceResources .Where(rec => rec.id == 0) .GroupBy(rec => rec.resourceId) .Select(rec => new { resourceId = rec.Key, count = rec.Sum(r => r.count) }); foreach (var groupComponent in groupComponents) { ServiceResource elementPC = context.ServiceResources .FirstOrDefault(rec => rec.serviceId == model.id && rec.resourceId == groupComponent.resourceId); if (elementPC != null) { elementPC.count += groupComponent.count; context.SaveChanges(); } else { context.ServiceResources.Add(new ServiceResource { serviceId = model.id, resourceId = groupComponent.resourceId, count = groupComponent.count }); context.SaveChanges(); } } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void AddElement(ServiceBindingModel model) { Service element = source.Services.FirstOrDefault(rec => rec.ServiceName == model.ServiceName); if (element != null) { throw new Exception("Уже есть услуга с таким названием"); } int maxId = source.Services.Count > 0 ? source.Services.Max(rec => rec.ServiceId) : 0; source.Services.Add(new Service { ServiceId = maxId + 1, ServiceName = model.ServiceName }); // компоненты для изделия int maxPCId = source.ServiceResourses.Count > 0 ? source.ServiceResourses.Max(rec => rec.ServiceResourseId) : 0; // убираем дубли по компонентам var groupComponents = model.ServiceResourses .GroupBy(rec => rec.ResourseId) .Select(rec => new { ResourseId = rec.Key, Count = rec.Sum(r => r.Count) }); // добавляем компоненты foreach (var groupComponent in groupComponents) { source.ServiceResourses.Add(new ServiceResourse { ServiceResourseId = ++maxPCId, ServiceId = maxId + 1, ResourseId = groupComponent.ResourseId, Count = groupComponent.Count }); } var productComponents = source.ServiceResourses.Where(rec => rec.ServiceId == element.ServiceId); foreach (var productComponent in productComponents) { int countOnStocks = source.SkladResourses .Where(rec => rec.ResourseId == productComponent.ResourseId) .Sum(rec => rec.Count); if (countOnStocks < productComponent.Count) { var componentName = source.Resourses.FirstOrDefault(rec => rec.ResourseId == productComponent.ResourseId); throw new Exception("Не достаточно ресурсов " + componentName?.ResourseName + " требуется " + (productComponent.Count) + ", в наличии " + countOnStocks); } } // списываем foreach (var productComponent in productComponents) { int countOnStocks = productComponent.Count; var stockComponents = source.SkladResourses.Where(rec => rec.ResourseId == productComponent.ResourseId); foreach (var stockComponent in stockComponents) { // компонентов на одном слкаде может не хватать if (stockComponent.Count >= countOnStocks) { stockComponent.Count -= countOnStocks; break; } else { countOnStocks -= stockComponent.Count; stockComponent.Count = 0; } } } }