public ActionResult Create(ContractCreateViewModel ContractCreateViewModel) { if (ModelState.IsValid) { //if Contract does not exist yet Guid contractId = Guid.NewGuid(); ContractCreateViewModel.Contract.ContractID = contractId; ContractCreateViewModel.Contract.BeatID = db.vBeats.FirstOrDefault().BeatID; //obsolete db.Contracts.InsertOnSubmit(ContractCreateViewModel.Contract); db.SubmitChanges(); //add beats foreach (var beat in ContractCreateViewModel.SelectedBeats) { ContractsBeat contractsBeat = new ContractsBeat(); contractsBeat.BeatID = beat; contractsBeat.ContractID = contractId; db.ContractsBeats.InsertOnSubmit(contractsBeat); } db.SubmitChanges(); return(RedirectToAction("Index")); } ViewBag.Contractors = db.Contractors.OrderBy(p => p.ContractCompanyName).ToList(); return(View(ContractCreateViewModel)); }
public ActionResult Edit(ContractCreateViewModel ContractCreateViewModel) { try { if (ModelState.IsValid) { db.Contracts.Attach(ContractCreateViewModel.Contract); db.Refresh(RefreshMode.KeepCurrentValues, ContractCreateViewModel.Contract); db.SubmitChanges(); //remove existing ones var existingBeats = db.ContractsBeats.Where(p => p.ContractID == ContractCreateViewModel.Contract.ContractID); foreach (var existingBeat in existingBeats) { db.ContractsBeats.DeleteOnSubmit(existingBeat); } db.SubmitChanges(); //re-add beats foreach (var beat in ContractCreateViewModel.SelectedBeats) { ContractsBeat contractsBeat = new ContractsBeat(); contractsBeat.BeatID = beat; contractsBeat.ContractID = ContractCreateViewModel.Contract.ContractID; db.ContractsBeats.InsertOnSubmit(contractsBeat); } db.SubmitChanges(); return(RedirectToAction("Index")); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } ViewBag.Contractors = db.Contractors.OrderBy(p => p.ContractCompanyName).ToList(); return(View(ContractCreateViewModel.Contract)); }