public ContactOperationStatus Save(Contact contact) { var operationStatus = new ContactOperationStatus(); try { if (_database.IsNew(contact)) { contact.ContactId=(int)_database.Insert(contact); operationStatus.ContactCreated = true; } else { _database.Update(contact); } operationStatus.Contact = contact; operationStatus.Status = true; } catch (Exception e) { operationStatus.LogFailedOperation(e); //operationStatus = OperationStatusExceptionHelper<ContactOperationStatus> // .CreateFromException("An error has occurred retrieving the contact from the queue", e); } return operationStatus; }
public ContactOperationStatus GetContact() { var operationStatus=new ContactOperationStatus(); int contactId = 0; try { //if the user logged in? if (_authenticationHandler.IsCurrentUserLoggedIn()) { //if yes, get the ContactId contactId = _authenticationHandler.GetContactId(); //if there is one, get the contact if (contactId>0) operationStatus = _contactRepository.Get(contactId); else { operationStatus.Status = false; } //if no luck with contact repository, try secondary repository, if it is active if (!operationStatus.Status&&_secondaryContactRepository.RepositoryAvailable()) { string userName = _authenticationHandler.GetUserName(); operationStatus = _secondaryContactRepository.Get(userName); if (operationStatus.Status) { operationStatus = _contactRepository.Save(operationStatus.Contact); if (operationStatus.Status) _authenticationHandler.SetContactId(operationStatus.Contact.UserName,operationStatus.Contact.ContactId); } } if (operationStatus.Status) { Contact contact = operationStatus.Contact; contact.CountryDesc = _contactSynchroniser.GetCountry(contact.Country).Name; if (contact.SeparateDeliveryAddress) contact.DeliveryCountryDesc = _contactSynchroniser.GetCountry(contact.DeliveryCountry).Name; //check if the UserId for the contact needs updating string currentUserId = _authenticationHandler.GetUserId(); string currentReferrerdId = _authenticationHandler.GetReferrerId(); if (contact.UserId != currentUserId||contact.ReferrerId!=currentReferrerdId) { contact.UserId = currentUserId; contact.ReferrerId = currentReferrerdId; _contactRepository.Save(contact); } contact.ReferrerId = _authenticationHandler.GetReferrerId(); if (_contactSynchroniser.SynchronisationAvailable() && _contactSynchroniser.CanContactBeSynced(contact)) { operationStatus = _contactSynchroniser.GetContact(contact.ExternalContactNumber); if (operationStatus.Status) { //merge in changes from sync contact.InjectFrom<IgnoreNulls>(operationStatus.Contact); contact.ContactId = contactId; //update the repository with the changes operationStatus = _contactRepository.Save(contact); } } } } else { Contact contact = new Contact(); contact.UserId = _authenticationHandler.GetUserId(); contact.ReferrerId = _authenticationHandler.GetReferrerId(); contact.Status = false; operationStatus.Contact = contact; operationStatus.Status = true; } } catch (Exception e) { operationStatus.LogFailedOperation(e); //operationStatus = OperationStatusExceptionHelper<ContactOperationStatus> // .CreateFromException("An error has occurred getting the contact", e); } return operationStatus; }