protected void lnkSave_Click(object sender, EventArgs e) { var request = new SaveContactRequest { Contact = Contact.Contact, User = Users.Current }; var response = ContactService.SaveContact(request); if (response.IsSuccessful) { UserMessage.SetSuccess("Contact Saved"); } else { UserMessage.SetFailure(response.Message); } }
public SaveContactResponse SaveContact(SaveContactRequest request) { var response = new SaveContactResponse(); if (request.User == null || request.User is AgentUser) { response.IsSuccessful = false; response.Message = Constants.Messages.NO_PERMISSIONS; return response; } System.Threading.Thread.CurrentPrincipal = request.User.GetUserPrincipal(); // TOOD: move validation to a single source. // Validation is cut and pasted from IContractService.SubmitContract. if (request.Contact == null) { throw new Exception("No Contact has been supplied."); } if (string.IsNullOrEmpty(request.Contact.Name)) { response.Message = "No contact name has been supplied."; return response; } if (request.Contact.PostalAddress == null) { throw new Exception("No Postal Address was supplied."); } if (string.IsNullOrEmpty(request.Contact.PostalAddress.State) || string.IsNullOrEmpty(request.Contact.PostalAddress.Suburb) || string.IsNullOrEmpty(request.Contact.PostalAddress.Postcode) || string.IsNullOrEmpty(request.Contact.PostalAddress.State)) { response.Message = "Please ensure postal address details have been filled out.\r" + "Including street, suburb, state, and postcode"; return response; } try { using (var ts = new TransactionScope()) { if (request.Contact.Id == null) { _contactRepository.InsertContact(request.Contact); if (request.Contact.Id != null) { request.Contact.LogActivity("New Contact added"); response.IsSuccessful = true; ts.Complete(); } else { response.Message = Constants.Messages.INTERNAL_ERROR; } } else { if (_contactRepository.UpdateContact(request.Contact)) { request.Contact.LogActivity("Updated Contact information"); response.IsSuccessful = true; ts.Complete(); } else { response.Message = Constants.Messages.INTERNAL_ERROR; } } } } catch (Exception ex) { // TODO: Log Exception LoggingUtility.LogException(request.User.Username, ex); response.Message = Constants.Messages.INTERNAL_ERROR; response.IsSuccessful = false; } return response; }