private List <CompetitorViewModel> GetData(int partnerId, string quarter) { var CompetitorVMList = new List <CompetitorViewModel>(); var Competitors = _db.Competitors; foreach (var Competitor in Competitors) { var CompetitorsLi = _db.CompetitorLandscapes.FirstOrDefault(t => t.PartnerId == partnerId && t.QuarterYear == quarter && t.CategoryId == Competitor.CategoryId); if (CompetitorsLi == null) { CompetitorsLi = new Data.Models.CompetitorLandscape(); } var CompetitorVM = new CompetitorViewModel { CompetitorId = CompetitorsLi.CompetitorId, Share = CompetitorsLi.Share, BrandPresenc = CompetitorsLi.BrandPresenc, PriceStrategy = CompetitorsLi.PriceStrategy, StoreInvestment = CompetitorsLi.StoreInvestment, AdditionalComment = CompetitorsLi.AdditionalComment, PartnerId = CompetitorsLi.PartnerId, CategoryName = Competitor.CategoryName, CompetitorName = Competitor.CompetitorName, CategoryId = Competitor.CategoryId, QuarterYear = CompetitorsLi.QuarterYear }; CompetitorVMList.Add(CompetitorVM); } return(CompetitorVMList.OrderBy(c => c.CategoryName).ToList()); }
public ActionResult RecentCompetitors() { var recentCompetitors = _competitorService.GetRecentlyAddedCompetitors(); var viewModel = CompetitorViewModel.BuildList(recentCompetitors); return(PartialView("CompetitorListPartial", viewModel)); }
public ActionResult AddCompetitor() { var viewModel = new CompetitorViewModel(); ViewBag.EditType = "Add"; return(View("EditCompetitor", viewModel)); }
public ActionResult AddCompetitor(CompetitorViewModel viewModel) { var competitor = viewModel.Map(); _competitorService.InsertCompetitor(competitor); return(RedirectToAction(nameof(CompetitorManagement))); }
public ActionResult EditCompetitor(int competitorId) { var competitor = _competitorService.GetCompetitorById(competitorId); var viewModel = CompetitorViewModel.Build(competitor); ViewBag.EditType = "Edit"; return(View(viewModel)); }
public ActionResult Edit([Bind(Include = "CompetitorId,CompName,Market,BasedIn,CompUrl")] CompetitorViewModel competitor) { if (ModelState.IsValid) { _compService.Save(competitor); return(RedirectToAction("Index")); } return(View(competitor)); }
public CompetitorViewModel Save(CompetitorViewModel competitor) { var comp = FromComp(competitor); db.Entry(comp).State = EntityState.Modified; db.SaveChanges(); return(CompDto(comp)); }
public CompetitorViewModel Create(CompetitorViewModel competitor) { var comp = FromComp(competitor); db.Competitors.Add(comp); db.SaveChanges(); comp.CompetitorId = competitor.CompetitorId; return(CompDto(comp)); }
// GET: Competitor public ActionResult Index() { var competitorList = GetCompetitors() as JsonResult; var competitorViewModel = new CompetitorViewModel { CompetitorList = competitorList.Data as MessageResult <CompetitorModel> }; return(View(competitorViewModel)); }
private static Competitor FromComp(CompetitorViewModel competitor) { var comp = new Competitor { CompetitorId = competitor.CompetitorId, CompName = competitor.CompName, Market = competitor.Market, CompUrl = competitor.CompUrl, BasedIn = competitor.BasedIn }; return(comp); }
// GET: Competitors/Create public ActionResult Create() { // MultiSelectList will hold all the available games a competitor can participate in MultiSelectList gamesList = new MultiSelectList(db.Games, "gameID", "gameName"); CompetitorViewModel competitorViewModel = new CompetitorViewModel { AllGames = gamesList }; ViewBag.countryList = GetCountries(); ViewBag.titlesList = GetTitles(); ViewBag.genderList = GetGenders(); return(View(competitorViewModel)); }
// GET: Competitor/Delete/5 public ActionResult Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CompetitorViewModel competitor = _compService.FindById(id.Value); if (competitor == null) { return(HttpNotFound()); } return(View(competitor)); }
public ActionResult EditCompetitor(CompetitorViewModel viewModel, string submitButton) { var competitor = viewModel.Map(); switch (submitButton) { case "Save": _competitorService.UpdateCompetitor(competitor); break; case "Delete": _competitorService.DeleteCompetitor(competitor); break; default: throw new ArgumentOutOfRangeException(nameof(submitButton)); } return(RedirectToAction(nameof(CompetitorManagement))); }
// GET: Competitors/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CompetitorViewModel competitorViewModel = new CompetitorViewModel(); competitorViewModel.Competitor = db.Competitors .Include(c => c.Games) .FirstOrDefault(c => c.competitorID == id); if (competitorViewModel.Competitor == null) { return(HttpNotFound()); } var allGames = db.Games.ToList(); competitorViewModel.Competitor.Games = allGames .Where(g => g.Competitors .Contains(competitorViewModel.Competitor)) .ToList(); List <int> selectedGames = new List <int>(); foreach (Game game in competitorViewModel.Competitor.Games) { selectedGames.Add(game.gameID); } // Populate the variables required for dropdown lists MultiSelectList gamesList = new MultiSelectList(allGames, "gameID", "gameName", selectedGames); competitorViewModel.AllGames = gamesList; ViewBag.countryList = GetCountries(); ViewBag.titlesList = GetTitles(); ViewBag.genderList = GetGenders(); return(View(competitorViewModel)); }
private void FillGridView() { var qtr = Quater; var partnerId = PartnerId; var CompetitorVMList = new List <CompetitorViewModel>(); var Competitors = _db.Competitors; foreach (var Competitor in Competitors) { var CompetitorsLi = _db.CompetitorLandscapes.FirstOrDefault(t => t.PartnerId == partnerId && t.QuarterYear == qtr && t.CategoryId == Competitor.CategoryId); if (CompetitorsLi == null) { CompetitorsLi = new Data.Models.CompetitorLandscape(); } var CompetitorVM = new CompetitorViewModel { CompetitorId = CompetitorsLi.CompetitorId, Share = CompetitorsLi.Share, BrandPresenc = CompetitorsLi.BrandPresenc, PriceStrategy = CompetitorsLi.PriceStrategy, StoreInvestment = CompetitorsLi.StoreInvestment, AdditionalComment = CompetitorsLi.AdditionalComment, PartnerId = CompetitorsLi.PartnerId, CategoryName = Competitor.CategoryName, CompetitorName = Competitor.CompetitorName, CompetitorLogo = Competitor.CompetitorLogo, CategoryId = Competitor.CategoryId, QuarterYear = CompetitorsLi.QuarterYear }; CompetitorVMList.Add(CompetitorVM); } GridView1.DataSource = CompetitorVMList; GridView1.DataBind(); GridView1.UseAccessibleHeader = true; GridView1.HeaderRow.TableSection = TableRowSection.TableHeader; }
// GET: DH public ActionResult Index() { var viewModel = new DashboardViewModel(); viewModel.Weeks.Add("Week 0"); viewModel.Weeks.Add("Week 1"); viewModel.Weeks.Add("Week 2"); viewModel.Weeks.Add("Week 3"); viewModel.Weeks.Add("Week 4"); var filePath = @"c:\dh.xlsx"; FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read); //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //3. DataSet - The result of each spreadsheet will be created in the result.Tables DataSet result = excelReader.AsDataSet(); //4. DataSet - Create column names from first row //excelReader.IsFirstRowAsColumnNames = true; //DataSet result = excelReader.AsDataSet(); if (result != null) { viewModel.Competitors = new List<CompetitorViewModel>(); for (int i = 2; i < result.Tables[0].Rows.Count; i++) { var competitor = new CompetitorViewModel(); var row = result.Tables[0].Rows[i]; competitor.Name = row[0].ToString(); competitor.Activities = int.Parse(row[row.ItemArray.Length - 1].ToString()); competitor.WeekActivities.Add(0); competitor.WeekActivities.Add(competitor.Activities); competitor.WeekActivities.Add((competitor.Activities + i)); competitor.WeekActivities.Add((competitor.Activities + i + i)); viewModel.Competitors.Add(competitor); } //foreach (DataRow item in result.Tables[0].Rows) //{ // var competitor = new CompetitorViewModel(); // competitor.Name = item[0].ToString(); // competitors.Add(competitor); //} } ////5. Data Reader methods //while (excelReader.Read()) //{ // var a = excelReader.GetInt32(0); //} //6. Free resources (IExcelDataReader is IDisposable) excelReader.Close(); return View(viewModel); }
public async Task <ActionResult> Edit(CompetitorViewModel competitorModel) { var selectedCompetitor = await _competitorService.Find(competitorModel.Id); var userId = Convert.ToInt32(User.Identity.Name); if (selectedCompetitor.IsApproved == null || selectedCompetitor.IsApproved == true) { var canEdit = await _participationService.CanEditPerson(selectedCompetitor.ParticipateId, userId); if (!canEdit) { ModelState.AddModelError("", "شما امکان ویرایش اطلاعات بازیکن را ندارید."); return(this.JsonValidationErrors()); } } else { var canEdit = await _participationService.CanEditRejectedPerson(selectedCompetitor.ParticipateId, userId); if (!canEdit) { ModelState.AddModelError("", "مهلت ویرایش اطلاعات بازیکن به پایان رسیده است."); return(this.JsonValidationErrors()); } } var tmpPath = Server.MapPath("~/App_Data/tmp/"); var fullName = string.Format("{0}-{1}", competitorModel.FirstName, competitorModel.LastName).ApplyCorrectYeKe(); if (selectedCompetitor.UserImage != competitorModel.UserImage) { var userImagePath = Server.MapPath("~/App_Data/User_Image/"); await CopyFileAsync(tmpPath + competitorModel.UserImage, userImagePath + string.Format("{0}-{1}", fullName, competitorModel.UserImage)); System.IO.File.Delete(userImagePath + selectedCompetitor.UserImage); selectedCompetitor.UserImage = string.Format("{0}-{1}", fullName, competitorModel.UserImage); } if (selectedCompetitor.StudentCertificateImage != competitorModel.StudentCertificateImage) { var studentCertificateImagePath = Server.MapPath("~/App_Data/Student_Certificate_Image/"); await CopyFileAsync(tmpPath + competitorModel.StudentCertificateImage, studentCertificateImagePath + string.Format("{0}-{1}", fullName, competitorModel.StudentCertificateImage)); System.IO.File.Delete(studentCertificateImagePath + selectedCompetitor.StudentCertificateImage); selectedCompetitor.StudentCertificateImage = string.Format("{0}-{1}", fullName, competitorModel.StudentCertificateImage); } if (selectedCompetitor.InsuranceImage != competitorModel.InsuranceImage) { var insuranceImagePath = Server.MapPath("~/App_Data/Insurance_Image/"); await CopyFileAsync(tmpPath + competitorModel.InsuranceImage, insuranceImagePath + string.Format("{0}-{1}", fullName, competitorModel.InsuranceImage)); System.IO.File.Delete(insuranceImagePath + selectedCompetitor.InsuranceImage); selectedCompetitor.InsuranceImage = string.Format("{0}-{1}", fullName, competitorModel.InsuranceImage); } if (selectedCompetitor.AzmoonConfirmationImage != competitorModel.AzmoonConfirmationImage) { var azmoonImagePath = Server.MapPath("~/App_Data/Azmoon_Confirmation_Image/"); await CopyFileAsync(tmpPath + competitorModel.AzmoonConfirmationImage, azmoonImagePath + string.Format("{0}-{1}", fullName, competitorModel.AzmoonConfirmationImage)); System.IO.File.Delete(azmoonImagePath + selectedCompetitor.AzmoonConfirmationImage); selectedCompetitor.AzmoonConfirmationImage = string.Format("{0}-{1}", fullName, competitorModel.AzmoonConfirmationImage); } selectedCompetitor.FirstName = competitorModel.FirstName; selectedCompetitor.LastName = competitorModel.LastName; selectedCompetitor.InsuranceEndDate = competitorModel.InsuranceEndDate; selectedCompetitor.StudyFieldId = competitorModel.StudyFieldId; selectedCompetitor.StudyFieldDegreeId = competitorModel.StudyFieldDegreeId; selectedCompetitor.NationalCode = competitorModel.NationalCode; selectedCompetitor.BirthDate = competitorModel.BirthDate; selectedCompetitor.FatherName = competitorModel.FatherName; selectedCompetitor.Email = competitorModel.Email; selectedCompetitor.MobileNumber = competitorModel.MobileNumber; selectedCompetitor.StudentNumber = competitorModel.StudentNumber; selectedCompetitor.Weight = competitorModel.Weight; selectedCompetitor.Height = competitorModel.Height; selectedCompetitor.PhoneNumber = competitorModel.PhoneNumber; selectedCompetitor.InsuranceNumber = competitorModel.InsuranceNumber; selectedCompetitor.IsApproved = null; await _dbContext.SaveChangesAsync(); return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
private List<CompetitorViewModel> generateViewModelResults(List<CompetitorAxware> competitorsRawResults, ref int maxNumberOfTimes) { maxNumberOfTimes = 0; string[] timesStr = new string[20]; double[] times = new double[20]; double[] overallCompetitorTimes = new double[competitorsRawResults.Count()]; List<double> n2CompetitorTimes = new List<double>(); List<double> n4CompetitorTimes = new List<double>(); List<double> e2CompetitorTimes = new List<double>(); List<double> e4CompetitorTimes = new List<double>(); List<double> proCompetitorTimes = new List<double>(); List<double> truckCompetitorTimes = new List<double>(); // Container to hold calculated results, but unordered List<CompetitorViewModel> competitorsProcessedResults = new List<CompetitorViewModel>(); int competitorIndex = 0; // First find how many runs each competitor have completed and find the maximum value; foreach (CompetitorAxware competitor in competitorsRawResults) { var timeList = new List<string> { competitor.Run1, competitor.Run2, competitor.Run3,competitor.Run4,competitor.Run5,competitor.Run6,competitor.Run7,competitor.Run8, competitor.Run9,competitor.Run10,competitor.Run11, competitor.Run12,competitor.Run13,competitor.Run14,competitor.Run15,competitor.Run16,competitor.Run17,competitor.Run18,competitor.Run19,competitor.Run20 }; var numberOfTimes = timeList.Count(k => k != ""); if (numberOfTimes > maxNumberOfTimes) maxNumberOfTimes = numberOfTimes; } // Calculate total time and position for each competitor foreach (CompetitorAxware competitor in competitorsRawResults) { var competitorViewModel = new CompetitorViewModel { // Assign the basic properties Car = competitor.Car, Name = competitor.Name, Class = competitor.Class, Number = competitor.Number }; if (maxNumberOfTimes > 0) { var timeList = new List<string> { competitor.Run1, competitor.Run2, competitor.Run3,competitor.Run4,competitor.Run5,competitor.Run6,competitor.Run7,competitor.Run8, competitor.Run9,competitor.Run10,competitor.Run11, competitor.Run12,competitor.Run13,competitor.Run14,competitor.Run15,competitor.Run16,competitor.Run17,competitor.Run18,competitor.Run19,competitor.Run20 }; var penaltyList = new List<string> { competitor.Pen1, competitor.Pen2, competitor.Pen3, competitor.Pen4, competitor.Pen5, competitor.Pen6, competitor.Pen7, competitor.Pen8, competitor.Pen9, competitor.Pen10, competitor.Pen11, competitor.Pen12,competitor.Pen13, competitor.Pen14,competitor.Pen15, competitor.Pen16,competitor.Pen17, competitor.Pen18,competitor.Pen19, competitor.Pen20}; // Add times to an array int i = 0; foreach (var time in timeList) { timesStr[i] = time; i++; } // Update time string with penalties (if applicable). Times over 300s or Off-course are capped i = 0; foreach (string penalty in penaltyList) { times[i] = singleTimeValidation(ref timesStr[i], penalty); i++; } // Update view model with times + penalty competitorViewModel.Time1 = timesStr[0]; competitorViewModel.Time2 = timesStr[1]; competitorViewModel.Time3 = timesStr[2]; competitorViewModel.Time4 = timesStr[3]; competitorViewModel.Time5 = timesStr[4]; competitorViewModel.Time6 = timesStr[5]; competitorViewModel.Time7 = timesStr[6]; competitorViewModel.Time8 = timesStr[7]; competitorViewModel.Time9 = timesStr[8]; competitorViewModel.Time10 = timesStr[9]; competitorViewModel.Time11 = timesStr[10]; competitorViewModel.Time12 = timesStr[11]; competitorViewModel.Time13 = timesStr[12]; competitorViewModel.Time14 = timesStr[13]; competitorViewModel.Time15 = timesStr[14]; competitorViewModel.Time16 = timesStr[15]; competitorViewModel.Time17 = timesStr[16]; competitorViewModel.Time18 = timesStr[17]; competitorViewModel.Time19 = timesStr[18]; competitorViewModel.Time20 = timesStr[19]; // If competitor has less timed runs than the maximum number of timed runs, add 300s to the missed runs if (times.Count(k => k > 0) < maxNumberOfTimes) { for (int j = times.Count(k => k > 0); j < maxNumberOfTimes; j++) times[j] = 300; } // Raw time (all summed up) competitorViewModel.RawTime = times.Sum(); //Discard the slowest time if competitor has more than one timed run if (maxNumberOfTimes > 1) competitorViewModel.MinusSlowest = times.Sum() - times.Max(); else competitorViewModel.MinusSlowest = times.Sum(); overallCompetitorTimes[competitorIndex] = competitorViewModel.MinusSlowest; competitorViewModel.FastestLap = times.Where(f => f > 0).Min(); } switch (competitor.Class) { case CompetitionClass.n2: n2CompetitorTimes.Add(competitorViewModel.MinusSlowest); break; case CompetitionClass.n4: n4CompetitorTimes.Add(competitorViewModel.MinusSlowest); break; case CompetitionClass.e2: e2CompetitorTimes.Add(competitorViewModel.MinusSlowest); break; case CompetitionClass.e4: e4CompetitorTimes.Add(competitorViewModel.MinusSlowest); break; case CompetitionClass.pro: case CompetitionClass.p2: case CompetitionClass.p4: proCompetitorTimes.Add(competitorViewModel.MinusSlowest); break; case CompetitionClass.truck: truckCompetitorTimes.Add(competitorViewModel.MinusSlowest); break; default: break; } competitorsProcessedResults.Add(competitorViewModel); competitorIndex++; } // Find out what is the overall position for each competitor double[] n2CompetitorTimesArray = n2CompetitorTimes.ToArray(); double[] n4CompetitorTimesArray = n4CompetitorTimes.ToArray(); double[] e2CompetitorTimesArray = e2CompetitorTimes.ToArray(); double[] e4CompetitorTimesArray = e4CompetitorTimes.ToArray(); double[] proCompetitorTimesArray = proCompetitorTimes.ToArray(); double[] truckCompetitorTimesArray = truckCompetitorTimes.ToArray(); Array.Sort(overallCompetitorTimes); Array.Sort(n2CompetitorTimesArray); Array.Sort(n4CompetitorTimesArray); Array.Sort(e2CompetitorTimesArray); Array.Sort(e4CompetitorTimesArray); Array.Sort(proCompetitorTimesArray); Array.Sort(truckCompetitorTimesArray); foreach (var competitor in competitorsProcessedResults) { competitor.Overall = Array.IndexOf(overallCompetitorTimes, competitor.MinusSlowest) + 1; switch (competitor.Class) { case CompetitionClass.n2: competitor.InClass = Array.IndexOf(n2CompetitorTimesArray, competitor.MinusSlowest) + 1; break; case CompetitionClass.n4: competitor.InClass = Array.IndexOf(n4CompetitorTimesArray, competitor.MinusSlowest) + 1; break; case CompetitionClass.e2: competitor.InClass = Array.IndexOf(e2CompetitorTimesArray, competitor.MinusSlowest) + 1; break; case CompetitionClass.e4: competitor.InClass = Array.IndexOf(e4CompetitorTimesArray, competitor.MinusSlowest) + 1; break; case CompetitionClass.pro: case CompetitionClass.p2: case CompetitionClass.p4: competitor.InClass = Array.IndexOf(proCompetitorTimesArray, competitor.MinusSlowest) + 1; break; case CompetitionClass.truck: competitor.InClass = Array.IndexOf(truckCompetitorTimesArray, competitor.MinusSlowest) + 1; break; default: break; } } return competitorsProcessedResults.OrderBy(o => o.Overall).ToList(); }
public ActionResult Create(CompetitorViewModel competitorViewModel, HttpPostedFileBase competitorPhoto) { if (competitorPhoto != null) { // An array of allowed extensions var acceptedExtentions = new[] { ".png", ".jpg", ".jpeg", ".gif" }; // Get extention of the file var fileExtension = Path.GetExtension(competitorPhoto.FileName).ToLower(); if (!acceptedExtentions.Contains(fileExtension)) { ModelState.AddModelError(string.Empty, "File is not a valid type!"); } // Check if the file has any content. A 0 byte file will return invalid to the view if (competitorPhoto.ContentLength < 1) { ModelState.AddModelError("", "Error uploading file, file is empty or corrupt!"); } } if (ModelState.IsValid) { // Populate competitor object with form data Competitor competitor = competitorViewModel.Competitor; // Convert email to lowercase competitor.competitorEmail = competitor.competitorEmail.ToLower(); if (competitorViewModel.SelectedGames != null) { foreach (var gameID in competitorViewModel.SelectedGames) { // Find the game by ID Game game = db.Games.Find(gameID); competitor.Games.Add(game); } } if (competitorPhoto != null) { var fileExtension = Path.GetExtension(competitorPhoto.FileName).ToLower(); string fileNamePattern = @"\s|[().,]"; var fileName = Regex.Replace(competitor.competitorName, fileNamePattern, string.Empty) + fileExtension; try { competitorPhoto.SaveAs(Path.Combine(HttpContext.Server.MapPath("~/Upload/Photos"), fileName)); competitor.competitorPhotoPath = "/Upload/Photos/" + fileName; } catch { // Show an error if file couldn't be saved for whatever reason // In a more traditional application the exception would be logged, however I am not doing that here ModelState.AddModelError("", "File could not be saved, please contact the administrator!"); } } // Verify the ModelState remains valid (try-catch block above could change it) if (ModelState.IsValid) { // Save changes to the DB db.Competitors.Add(competitor); db.SaveChanges(); return(RedirectToAction("Index")); } } // Repopulate the ViewBag/AllGames variables if the form is not valid and has to be re-displayed MultiSelectList gamesList = new MultiSelectList(db.Games, "gameID", "gameName"); competitorViewModel.AllGames = gamesList; ViewBag.countryList = GetCountries(); ViewBag.titlesList = GetTitles(); ViewBag.genderList = GetGenders(); return(View(competitorViewModel)); }
public ActionResult Edit(CompetitorViewModel model, HttpPostedFileBase competitorPhoto) { if (competitorPhoto != null) { // An array of allowed extensions var acceptedExtentions = new[] { ".png", ".jpg", ".jpeg", ".gif" }; var fileExtension = Path.GetExtension(competitorPhoto.FileName).ToLower(); if (!acceptedExtentions.Contains(fileExtension)) { ModelState.AddModelError(string.Empty, "File is not a valid type!"); } // Check if the file has any content. A 0 byte file will return invalid to the view if (!(competitorPhoto.ContentLength > 0)) { ModelState.AddModelError("", "Error uploading file, file is empty or corrupt!"); } } if (ModelState.IsValid) { // Source: http://stackoverflow.com/a/17819169 // Retrieve the current data for this competitor, including current games Competitor competitor = db.Competitors .Include(c => c.Games) .SingleOrDefault(c => c.competitorID == model.Competitor.competitorID); // Populate the competitor object within the DB context with the POST data db.Entry(competitor).CurrentValues.SetValues(model.Competitor); // Convert email to lowercase for consistency competitor.competitorEmail = competitor.competitorEmail.ToLower(); /* Compare the existing games for this competitor with the selected games * and remove all games that are not in the SelectedGames list */ competitor.Games.Where(g => !model.SelectedGames.Contains(g.gameID)) .ToList() .ForEach(game => competitor.Games.Remove(game)); foreach (int gameID in model.SelectedGames) { if (!competitor.Games.Any(g => g.gameID == gameID)) { Game addedGame = new Game { gameID = gameID }; // Attach the game to the current DbContext db.Games.Attach(addedGame); // Add the game to the competitor object competitor.Games.Add(addedGame); } } if (competitorPhoto != null) { var fileExtention = Path.GetExtension(competitorPhoto.FileName).ToLower(); string fileNamePattern = @"\s|[().,]"; var fileName = Regex.Replace(competitor.competitorName, fileNamePattern, string.Empty) + fileExtention; try { if (competitor.competitorPhotoPath != null) { System.IO.File.Delete(HttpContext.Server.MapPath("~" + competitor.competitorPhotoPath)); } competitorPhoto.SaveAs(Path.Combine(HttpContext.Server.MapPath("~/Upload/Photos"), fileName)); competitor.competitorPhotoPath = "/Upload/Photos/" + fileName; } catch { ModelState.AddModelError("", "File could not be saved, please contact the administrator!"); } } // Verify the ModelState remains valid (try-catch block above could change it) if (ModelState.IsValid) { db.Entry(competitor).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } } model.AllGames = new MultiSelectList(db.Games, "gameID", "gameName", model.SelectedGames); ViewBag.countryList = GetCountries(); ViewBag.titlesList = GetTitles(); ViewBag.genderList = GetGenders(); return(View(model)); }