Example #1
0
        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);
            }
        }
Example #3
0
        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);
            }
        }