Exemple #1
0
        public async Task <IActionResult> Edit(long id, [Bind("Id,Name,FunctionalGroupId, Product,Heat,AcidBase,ImageFile,Image,Catalyst,SolventId,Url")] ViewModels.NamedReactionViewModel appNamedreaction, string[] reactants, string[] byProducts, string catalyst, string solvent)
        {
            if (ModelState.IsValid)
            {
                if (id != appNamedreaction.Id)
                {
                    return(NotFound());
                }
            }

            var reactionToUpdate = await _context.AppNamedreaction
                                   .Include(i => i.FunctionalGroup)
                                   .Include(i => i.AppNamedreactionReactants)
                                   .ThenInclude(i => i.Reactant)
                                   .Include(i => i.AppNamedreactionByProducts)
                                   .ThenInclude(i => i.Reactant)
                                   .SingleOrDefaultAsync(m => m.Id == id);

            if (await TryUpdateModelAsync <NamedReaction>(
                    reactionToUpdate,
                    "",
                    r => r.Name, r => r.Product, r => r.Heat, r => r.AcidBase, r => r.FunctionalGroupId, r => r.CatalystId, r => r.SolventId, r => r.Url))
            {
                var fileName = _hostingEnvironment.WebRootPath + "/" + reactionToUpdate.Image;
                if (appNamedreaction.ImageFile != null)
                {
                    if (System.IO.File.Exists(fileName))
                    {
                        System.IO.File.Delete(fileName);
                    }
                    reactionToUpdate.Image = "Images/Reactions/" + Guid.NewGuid().ToString() + System.IO.Path.GetFileName(appNamedreaction.ImageFile.FileName);
                    using (var stream = new System.IO.FileStream(_hostingEnvironment.WebRootPath + "/" + reactionToUpdate.Image, System.IO.FileMode.Create))
                    {
                        await appNamedreaction.ImageFile.CopyToAsync(stream);

                        stream.Close();
                    }
                }
                UpdateNamedReactionReactants(reactants, reactionToUpdate);
                UpdateNamedReactionByProducts(byProducts, reactionToUpdate);
                if (string.IsNullOrEmpty(reactionToUpdate.Url))
                {
                    reactionToUpdate.Url = string.Empty;
                }
                if (string.IsNullOrEmpty(reactionToUpdate.Product))
                {
                    reactionToUpdate.Product = string.Empty;
                }
                //try
                //{
                _context.SaveChanges();
                //}
                //catch (DbUpdateException /* ex */)
                //{
                //    //Log the error (uncomment ex variable name and write a log.)
                //    ModelState.AddModelError("", "Unable to save changes. " +
                //        "Try again, and if the problem persists, " +
                //        "see your system administrator.");
                //}
                return(RedirectToAction(nameof(Index)));
            }
            // PopulateReactantData(appNamedreaction);
            ViewData["CatalystId"]        = new SelectList(_context.AppCatalyst.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.CatalystId);
            ViewData["FunctionalGroupId"] = new SelectList(_context.AppFunctionalgroup.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.FunctionalGroupId);
            ViewData["SolventId"]         = new SelectList(_context.AppSolvent.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.SolventId);
            return(View(appNamedreaction));
        }
Exemple #2
0
        // GET: Namedreactions/Edit/5
        public async Task <IActionResult> Edit(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var appNamedreaction = await _context.AppNamedreaction
                                   .Include(i => i.FunctionalGroup)
                                   .Include(i => i.AppNamedreactionReactants).ThenInclude(i => i.Reactant)
                                   .Include(i => i.AppNamedreactionByProducts).ThenInclude(i => i.Reactant)
                                   .AsNoTracking()
                                   .SingleOrDefaultAsync(m => m.Id == id);

            if (appNamedreaction == null)
            {
                return(NotFound());
            }

            ViewModels.NamedReactionViewModel viewModel = new ViewModels.NamedReactionViewModel()
            {
                Name              = appNamedreaction.Name,
                Product           = appNamedreaction.Product,
                Heat              = appNamedreaction.Heat,
                AcidBase          = appNamedreaction.AcidBase,
                CatalystId        = appNamedreaction.CatalystId,
                FunctionalGroupId = appNamedreaction.FunctionalGroupId,
                SolventId         = appNamedreaction.SolventId,
                Url   = appNamedreaction.Url,
                Image = appNamedreaction.Image
            };
            PopulateReactantData(appNamedreaction);
            List <SelectListItem> acidBaseList = new List <SelectListItem>
            {
                new SelectListItem {
                    Value = "AC", Text = "Acid"
                },
                new SelectListItem {
                    Value = "BA", Text = "Base"
                },
                new SelectListItem {
                    Value = "AB", Text = "Acid Or Base"
                },
                new SelectListItem {
                    Value = "NA", Text = "Not Applicable"
                }
            };

            ViewData["AcidBaseList"] = new SelectList(acidBaseList, "Value", "Text", appNamedreaction.AcidBase);
            List <SelectListItem> heatList = new List <SelectListItem>
            {
                new SelectListItem {
                    Value = "HE", Text = "Heat"
                },
                new SelectListItem {
                    Value = "NA", Text = "Not Applicable"
                }
            };

            ViewData["HeatList"]          = new SelectList(heatList, "Value", "Text", appNamedreaction.Heat);
            ViewData["CatalystId"]        = new SelectList(_context.AppCatalyst.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.CatalystId);
            ViewData["FunctionalGroupId"] = new SelectList(_context.AppFunctionalgroup.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.FunctionalGroupId);
            ViewData["SolventId"]         = new SelectList(_context.AppSolvent.OrderBy(i => i.Name.ToLower()).ToList(), "Id", "Name", appNamedreaction.SolventId);
            return(View(viewModel));
        }