Пример #1
0
        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;
        }
Пример #2
0
        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;
        }