// GET: Companies/Edit/{name} public ActionResult Edit(string id) { if (string.IsNullOrEmpty(id)) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } using (CompanyContactsContext db = new CompanyContactsContext()) { Company company = db.Companies.Find(id); if (company != null) { int? keyContactId = null; int? emergencyContactId = null; bool onSite = false; foreach (Contact contact in db.Contacts) { if (contact.CompanyName.Equals(company.CompanyName)) { if (contact.KeyContact) { keyContactId = contact.ContactId; onSite = contact.OnSite; } if (contact.EmergencyContact) { emergencyContactId = contact.ContactId; } } } var viewModel = new CompanyContactDetailsViewModel { CompanyName = company.CompanyName, CompanyRef = company.CompanyRef, NatureOfBusiness = company.NatureOfBusiness, ContactNames = GetContacts(), KeyContact = keyContactId, OnSite = onSite, EmergencyContact = emergencyContactId }; return(View(viewModel)); } } return(HttpNotFound()); }
public ActionResult Edit([Bind(Include = "CompanyName,CompanyRef,NatureOfBusiness,KeyContact,OnSite,EmergencyContact")] CompanyContactDetailsViewModel companyView) { Company company = new Company(); company.CompanyName = companyView.CompanyName; company.CompanyRef = companyView.CompanyRef; company.NatureOfBusiness = companyView.NatureOfBusiness; companyView.ContactNames = GetContacts(); if (ModelState.IsValid) { using (CompanyContactsContext db = new CompanyContactsContext()) { // We may have just made a contact the key or emergency contact. If so, ensure that only one // person is the specified contact for this company. foreach (Contact contact in db.Contacts) { if (contact.CompanyName.Equals(company.CompanyName)) { contact.KeyContact = false; contact.OnSite = false; if (contact.ContactId == companyView.KeyContact) { contact.KeyContact = true; contact.OnSite = companyView.OnSite; } contact.EmergencyContact = false; if (contact.ContactId == companyView.EmergencyContact) { contact.EmergencyContact = true; } db.Entry(contact).State = EntityState.Modified; } } db.Entry(company).State = EntityState.Modified; db.SaveChanges(); } return(RedirectToAction("Index")); } return(View(companyView)); }