public ActionResult Edit(Contact contact) { using (var context = new DatabaseContext()) { if (!ModelState.IsValid) return View(CreateTuple(context, contact)); try { context.Entry(contact).State = EntityState.Modified; context.SaveChanges(); return RedirectToAction("WithContacts", "Client", new { id = contact.ClientId }); } catch { return View(CreateTuple(context, contact)); } } }
/// <summary>GET action of the CREATE functionality</summary> /// <returns>View with new object</returns> public ActionResult Create(int clientId) { using (var context = new DatabaseContext()) { var client = context.Clients .Include(x => x.Manager) .First(x => x.Id == clientId); var contact = new Contact { ClientId = clientId }; return View(new Tuple<Manager, Client, Contact>(client.Manager, client, contact)); } }
/// <summary>Creates POC object from its properties</summary> /// <returns>POC object</returns> private static Contact ParseEntity(string id, string clientId, string type, string description) { var contact = new Contact(); int no; if (!int.TryParse(id, out no)) throw new Exception("Incorrect ID during instantiating of Contact"); contact.Id = no; int clientNo; if (!int.TryParse(clientId, out clientNo)) throw new Exception("Incorrect Client ID during instantiating of Contact with ID = " + contact.Id); contact.ClientId = clientNo; int kind; if (!int.TryParse(type, out kind)) throw new Exception("Incorrect Type during instantiating of Contact with ID = " + contact.Id); switch (kind) { case 2: contact.Type = ContactType.MobilePhoneLocal; break; case 5: contact.Type = ContactType.MobilePhoneInternational; break; case 7: contact.Type = ContactType.HomePhone; break; case 9: contact.Type = ContactType.WorkingPhone; break; case 11: contact.Type = ContactType.PostAddress; break; case 15: contact.Type = ContactType.Fax; break; case 19: contact.Type = ContactType.Email; break; case 23: contact.Type = ContactType.Phone; break; case 29: contact.Type = ContactType.Comment; break; default: if (kind != 0) throw new Exception("Incorrect Type during instantiating of Contact with ID = " + contact.Id); break; } contact.Description = WebUtility.HtmlDecode( (string.IsNullOrWhiteSpace(description) ? string.Empty : description).Trim()); return contact; }
/// <summary>Creates view model</summary> /// <returns>View model</returns> private static Tuple<Manager, Client, Contact> CreateTuple(DatabaseContext context, Contact contact) { contact.Client = context.Clients .Include(x => x.Manager) .First(x => x.Id == contact.ClientId); return new Tuple<Manager, Client, Contact>(contact.Client.Manager, contact.Client, contact); }