public ActionResult Edit(Guid id) { Log.Information("GET Compound/Edit triggered"); var compoundElements = _repo.GetCompoundElementsByCompoundId(id); if (compoundElements.Count == 0) { return(View("Error")); } //Map to DTO object var compoundElementDto = new CompoundElementPartialDto() { CompoundId = compoundElements.First().Compound.Id, Name = compoundElements.First().Compound.Name, TypeId = compoundElements.First().Compound.TypeId, Elements = Mapper.Map <List <ElementPartialDto> >(compoundElements) }; PopulateCombos(); ViewBag.TemperatureTypes = _temperatureTypeList; return(View(compoundElementDto)); }
public bool UpdateCompoundElement(CompoundElementPartialDto entity) { Log.Information("UpdateCompoundElement triggered {@entity}", entity); try { using (var context = new DatabaseContext()) { //First update compound var compound = context.Compounds.Find(entity.CompoundId); compound.Name = entity.Name; compound.TypeId = entity.TypeId; //Then update compound elements foreach (var element in entity.Elements) { var compoundElement = context.CompoundElements.Find(element.CompoundElementId); compoundElement.ElementId = element.Id; compoundElement.ElementQuantity = element.Quantity; } context.SaveChanges(); return(true); } } catch (Exception ex) { Log.Error(ex, "UpdateCompoundElement"); return(false); } }
public ActionResult Edit(CompoundElementPartialDto compoundElement) { Log.Information("POST Compound/Edit triggered"); ModelState.Clear(); if (ModelState.IsValid) { bool isSuccess = _repo.UpdateCompoundElement(compoundElement); if (isSuccess) { return(Redirect("/Compound/Index")); } ModelState.AddModelError(string.Empty, "Error saving compound."); } PopulateCombos(); return(View(compoundElement)); }
public void UpdateCompoundElement_ElementQuantitiesSuccessfullyUpdated() { //Arrange var repo = new CompoundRepository(); //Act var compound = repo.GetAllCompounds() .First(); var compoundElements = repo.GetCompoundElementsByCompoundId(compound.Id); var compoundElementDto = new CompoundElementPartialDto() { CompoundId = compoundElements.First().Compound.Id, Name = compoundElements.First().Compound.Name, TypeId = compoundElements.First().Compound.TypeId, Elements = Mapper.Map <List <ElementPartialDto> >(compoundElements) }; var elementQuantities = compoundElementDto.Elements .Select(e => e.Quantity) .ToList(); var random = new Random(); var expectedQuantities = new List <int>(); foreach (var element in compoundElementDto.Elements) { var randomNumber = random.Next(100, 500); expectedQuantities.Add(randomNumber); element.Quantity = randomNumber; } repo.UpdateCompoundElement(compoundElementDto); var newCompoundElements = repo.GetCompoundElementsByCompoundId(compound.Id); var newElements = Mapper.Map <List <ElementPartialDto> >(newCompoundElements); var newQuantities = newElements .Select(e => e.Quantity) .ToList(); //Assert Assert.AreEqual(expectedQuantities.Count, newQuantities.Count); Assert.IsTrue(expectedQuantities.All(newQuantities.Contains)); }
public bool CreateCompoundElement(CompoundElementPartialDto entity) { Log.Information("CreateCompoundElement triggered {@entity}", entity); try { using (var context = new DatabaseContext()) { //First map to Compound object and save to Compounds table var compound = Mapper.Map <Compound>(entity); bool created = CreateCompound(compound); if (!created) { return(false); } //Then map to CompoundElement and save to binding CompoundElements table foreach (var element in entity.Elements) { var compoundElement = Mapper.Map <CompoundElement>(element); compoundElement.CompoundId = compound.Id; context.CompoundElements.Add(compoundElement); } context.SaveChanges(); return(true); } } catch (Exception ex) { Log.Error(ex, "CreateCompoundElement"); return(false); } }