コード例 #1
0
        public ActionResult New()
        {
            var countries  = _context.Countries.ToList();
            var autoMakes  = _context.AutomobileMakes.ToList();
            var autoModels = _context.AutomobileModels.ToList();
            var details    = _context.Details.ToList();
            var engines    = _context.Engines.ToList();

            var viewModel = new AutomobileFormViewModel()
            {
                Countries         = countries,
                AutomobileMakes   = autoMakes,
                AutomobileModels  = autoModels,
                Details           = details,
                Engines           = engines,
                AutomobileDetails = new List <AutomobileDetail>()
            };

            foreach (var detail in details)
            {
                var automobileDetail = new AutomobileDetail();
                viewModel.AutomobileDetails.Add(automobileDetail);
            }

            return(View("AutomobileForm", viewModel));
        }
コード例 #2
0
        public ActionResult New()
        {
            var countries = _context.Countries.ToList();
            var viewModel = new AutomobileFormViewModel
            {
                Countries = countries
            };

            return(View("AutomobileForm", viewModel));
        }
コード例 #3
0
        public ActionResult Edit(int id)
        {
            var automobile = _context.Automobiles.SingleOrDefault(c => c.Id == id);

            if (automobile == null)
            {
                return(HttpNotFound());
            }

            var viewModel = new AutomobileFormViewModel
            {
                Automobile = automobile,
                Countries  = _context.Countries.ToList()
            };

            return(View("AutomobileForm", viewModel));
        }
コード例 #4
0
        public ActionResult Edit(int id)
        {
            var automobile = _context.Automobiles.SingleOrDefault(c => c.Id == id);

            if (automobile == null)
            {
                return(HttpNotFound());
            }

            IEnumerable <AutomobileDetail> automobileDetailsInDb = _context.AutomobileDetails.ToList().Where(c => c.AutomobileId == id);
            var detailsInDb = _context.Details.ToList();
            List <AutomobileDetail> automobileDetails = new List <AutomobileDetail>();

            foreach (var automobileDetail in automobileDetailsInDb)
            {
                automobileDetails.Add(automobileDetail);
            }

            var viewModel = new AutomobileFormViewModel(automobile)
            {
                Countries         = _context.Countries.ToList(),
                AutomobileMakes   = _context.AutomobileMakes.ToList(),
                AutomobileModels  = _context.AutomobileModels.ToList(),
                Details           = detailsInDb,
                Engines           = _context.Engines.ToList(),
                AutomobileDetails = automobileDetails
            };

            if (detailsInDb.Count() > automobileDetailsInDb.Count())
            {
                int dif = detailsInDb.Count() - automobileDetailsInDb.Count();
                int i   = 1;

                while (i <= dif)
                {
                    viewModel.AutomobileDetails.Add(new AutomobileDetail());
                    i++;
                }
            }

            return(View("AutomobileForm", viewModel));
        }
コード例 #5
0
        public ActionResult Save(Automobile automobile, List <AutomobileDetail> automobileDetails)
        {
            if (!ModelState.IsValid)
            {
                var viewModel = new AutomobileFormViewModel(automobile)
                {
                    Countries         = _context.Countries.ToList(),
                    AutomobileMakes   = _context.AutomobileMakes.ToList(),
                    AutomobileModels  = _context.AutomobileModels.ToList(),
                    Details           = _context.Details.ToList(),
                    Engines           = _context.Engines.ToList(),
                    AutomobileDetails = automobileDetails
                };

                return(View("AutomobileForm", viewModel));
            }

            // create a variable 'automobileId' which will be passed as parameter to the 'UploadFiles' view
            int automobileId;

            // check if we create new automobile or edit existing one
            if (automobile.Id == 0)
            {
                automobile.DateImported = DateTime.Now;
                automobile.StatusId     = 1;
                _context.Automobiles.Add(automobile);
                _context.SaveChanges();

                List <Detail> details = _context.Details.ToList();
                //  List<Automobile> automobiles = _context.Automobiles.ToList();
                var automobileLastId = _context.Automobiles.ToList().Last().Id;
                // var automobileLastId1 = _context.Automobiles.Max()
                // automobileId = automobiles.Last().Id;
                automobileId = automobileLastId;


                if (details.Any())
                {
                    for (int i = 0; i < details.Count(); i++)
                    {
                        automobileDetails[i].DetailId = details[i].Id;
                        // automobileDetails[i].AutomobileId = automobiles.Last().Id;
                        automobileDetails[i].AutomobileId = automobileLastId;
                        _context.AutomobileDetails.Add(automobileDetails[i]);
                    }
                }
            }
            else
            {
                automobileId = automobile.Id;

                var automobileInDb = _context.Automobiles.Single(c => c.Id == automobile.Id);
                automobileInDb.ReleaseDate       = automobile.ReleaseDate;
                automobileInDb.CountryId         = automobile.CountryId;
                automobileInDb.AutomobileMakeId  = automobile.AutomobileMakeId;
                automobileInDb.AutomobileModelId = automobile.AutomobileModelId;
                automobileInDb.EngineId          = automobile.EngineId;
                automobileInDb.Color             = automobile.Color;
                automobileInDb.Transmission      = automobile.Transmission;
                automobileInDb.Miles             = automobile.Miles;

                if (automobileDetails.Any())
                {
                    //we take all automobileDetails correcponding to the current automobile, then set their Vaues
                    //to the new Values coming from the view in the list automobileDetails
                    IEnumerable <AutomobileDetail> automobileDetailsInDb = _context.AutomobileDetails.Where(c => c.AutomobileId == automobile.Id);
                    List <AutomobileDetail>        automobileDetailsOld  = automobileDetails.FindAll(c => c.AutomobileId != null);
                    int n = 0;

                    foreach (var automobileDetail in automobileDetailsInDb)
                    {
                        automobileDetail.DetailValue = automobileDetailsOld[n].DetailValue;
                        n++;
                    }

                    if (automobileDetails.Any(c => c.AutomobileId == null))
                    {
                        //there are new automobileDetails wich should be created for first time
                        //we set their AutomobileId to the Id of the returned from the view automobile
                        List <AutomobileDetail> automobileDetailsNew = automobileDetails.FindAll(c => c.AutomobileId == null);
                        List <Detail>           detailsInDb          = _context.Details.ToList();

                        foreach (var automobileDetail in automobileDetailsNew)
                        {
                            automobileDetail.AutomobileId = automobile.Id;
                        }

                        // we find the diference between all details and these which should be added in automobileDetails table
                        // then in a loop set their detailsId and finally Add() them to the table in the DB
                        //  int dif = detailsInDb.Count() - automobileDetailsNew.Count();
                        int automobileDetailsNewCount = automobileDetailsNew.Count();
                        int detailCount = detailsInDb.Count();

                        for (int i = 0; i < automobileDetailsNewCount; i++)
                        {
                            automobileDetailsNew[i].DetailId = detailsInDb[detailCount - automobileDetailsNewCount + i].Id;
                            _context.AutomobileDetails.Add(automobileDetailsNew[i]);
                        }
                    }
                }
            }
            _context.SaveChanges();

            //the next lines prepare image model which will be used to call the Uploadfiles view
            IEnumerable <FileModel> filesInDb = _context.FileModels.ToList().Where(c => c.AutomobileId == automobileId);

            var imageModel = new ImagesFormViewModel()
            {
                AutomobileId = automobileId,
                FileModels   = filesInDb
            };

            // return RedirectToAction("Index", "Automobiles");
            // return RedirectToAction("UploadFiles", "FileModels", automobileId);
            return(View("~/Views/FileModels/UploadFiles.cshtml", imageModel));
        }