Пример #1
0
        public ContactOperationStatus CreateContactFromQueue(int contactId)
        {
            var operationStatus = new ContactOperationStatus();
            try
            {
                operationStatus = _contactRepository.Get(contactId);
                if (operationStatus.Status)
                {
                    var contact = operationStatus.Contact;
                    //sync the queued contact
                    operationStatus = _contactSynchroniser.SaveContact(operationStatus.Contact);
                    if (operationStatus.Status)
                    {
                        //then save locally (to update the external contact/address numbers)
                        operationStatus = _contactRepository.Save(operationStatus.Contact);
                    }
                    return operationStatus;
                }
            }
            catch (Exception e)
            {
                operationStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                    .CreateFromException("An error has occurred getting the contact", e);

            }
            return operationStatus;
        }
Пример #2
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;
        }
Пример #3
0
        public ContactOperationStatus Get(int contactId)
        {
            var operationStatus = new ContactOperationStatus();
            try
            {
                operationStatus.Contact = _database.SingleOrDefault<Contact>("SELECT * FROM cpxContact WHERE ContactId=@0",contactId);
                operationStatus.Status =(operationStatus.Contact!=null);
            }
            catch (Exception e)
            {
                operationStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                    .CreateFromException("An error has occurred retrieving the contact from the queue", e);

            }
            return operationStatus;
        }
Пример #4
0
 /// <summary>
 /// get existing contact by username
 /// </summary>
 /// <param name="userName"></param>
 /// <returns></returns>
 public ContactOperationStatus Get(string userName)
 {
     var operationStatus=new ContactOperationStatus();
     try
     {
         Contact contact = LoadFromProfile(ProfileBase.Create(userName, true));
         contact.UserId = GetUserId();
         operationStatus.Status = true;
         operationStatus.Contact = contact;
     }
     catch (Exception e)
     {
         operationStatus.Status = false;
         operationStatus.Message = "An error occured while retrieving your contact information.";
     }
     return operationStatus;
 }
Пример #5
0
        private ContactOperationStatus CreateContact(Contact contact)
        {
            MembershipCreateStatus createStatus = new MembershipCreateStatus();
            MembershipUser newUser = Membership.CreateUser(contact.UserName, contact.Password,contact.Email, "Question", "Answer", true, out createStatus);

            ContactOperationStatus returnStatus;

            switch (createStatus)
            {
                case MembershipCreateStatus.Success:
                    System.Web.Security.FormsAuthentication.SetAuthCookie(contact.UserName, true);
                    CreateProfile(contact);
                    returnStatus = new ContactOperationStatus { Status = true, Message = "Your account has been successfully created." };
                    break;
                case MembershipCreateStatus.DuplicateUserName:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "That username already exists.  If you have already registered with us and can't remember your password, please use the Password recovery link to reset your password." };
                    break;
                case MembershipCreateStatus.DuplicateEmail:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "A user with that Email address already exists.  If you have already registered with us and can't remember your password, please use the Password recovery link to reset your password." };
                    break;
                case MembershipCreateStatus.InvalidEmail:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "Please enter a VALID email address." };
                    break;
                case MembershipCreateStatus.InvalidAnswer:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "The security answer is not valid" };
                    break;
                case MembershipCreateStatus.InvalidPassword:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "The password entered is invalid. Please enter a passoword with at least 7 characters and one non-alphanumeric." };
                    break;
                default:
                    returnStatus = new ContactOperationStatus { Status = false, Message = "Unknown Error: Account NOT created." };
                    break;
            }

            return returnStatus;
        }
Пример #6
0
        public ContactOperationStatus UpdateExternalContactNumber(int contactId, int externalContactNumber)
        {
            var operationStatus=new ContactOperationStatus();
            try
            {
                operationStatus = _contactRepository.Get(contactId);
                if (operationStatus.Status)
                {
                    var contact = operationStatus.Contact;
                    contact.ExternalContactNumber = externalContactNumber;
                    operationStatus = _contactRepository.Save(contact);
                }
            }
            catch (Exception e)
            {
                operationStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                    .CreateFromException("An error has occurred getting the contact", e);

            }
            return operationStatus;
        }
Пример #7
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;
        }
Пример #8
0
        private ContactOperationStatus UpdateContact(Contact contact)
        {
            var opStatus = new ContactOperationStatus { Status = true };

            var careWebServices = new CARECustomerPortalExtensions.CareWebServices.NDataAccessSoapClient();

            //first update contact information
            string sendXML = String.Format("<Parameters>" +
                "<ContactNumber>{0}</ContactNumber>" +
                "<Title>{1}</Title>" +
                "<Forenames>{2}</Forenames>" +
                "<Surname>{3}</Surname>" +
                "<Address>{4}</Address>" +
                "<Town>{5}</Town>" +
                "<County>{6}</County>" +
                "<Country>{7}</Country>" +
                "<DirectNumber>{8}</DirectNumber>" +
                "<MobileNumber>{9}</MobileNumber>" +
                "<EmailAddress>{10}</EmailAddress>" +
                 "<UserLogname>fscweb</UserLogname>" +
                "</Parameters>",
                contact.ExternalContactNumber, contact.Title, contact.FirstName, contact.LastName, contact.Address1 + "\n" + contact.Address2 + "\n" + contact.Address3,
                contact.Town, contact.County, contact.Country, contact.Telephone, contact.Mobile, contact.Email);

            //Load xmldata into XDocument Object
            XDocument sendingXMLDoc = XDocument.Parse(sendXML);

            string returnXML = careWebServices.UpdateContact(sendingXMLDoc.ToString());

            XDocument receivingXMLDoc = XDocument.Parse(returnXML);

            try
            {
                //TODO: what to do about lack of address number returned?
                int careContactNumber = Convert.ToInt32(receivingXMLDoc.Element("Result")
                    .Element("ContactNumber").Value);
                contact.ExternalContactNumber = careContactNumber;
                opStatus.Contact = contact;
                opStatus.Message = "The contact has been successfully updated.";
            }
            catch (Exception e)
            {
                opStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                    .CreateFromException("Error updating contact in CARE: " + e.Message, e);
                opStatus.Status = false;

            }
            //if update of contact information worked
            //* if (opStatus.Status)
            //{
            //update address information
            //    sendXML = String.Format("<Parameters>" +
            //        "<ContactNumber>{0}</ContactNumber>" +
            //        "<AddressNumber>{1}</AddressNumber>" +
            //        "<Address>{2}</Address>" +
            //        "<Town>{3}</Town>" +
            //        "<County>{4}</County>" +
            //       "<Country>{5}</Country>" +
            //      contact.ExternalContactNumber, contact.ExternalAddressNumber, contact.Address1 + "\n" + contact.Address2 + "\n" + contact.Address3,
            //       contact.Town, contact.County, contact.Country);

            //Load xmldata into XDocument Object
            //              sendingXMLDoc = XDocument.Parse(sendXML);
            //
            //returnXML = careWebServices.UpdateAddress(sendingXMLDoc.ToString());
            //            receivingXMLDoc = XDocument.Parse(returnXML);
            //try
            //{
            //     int careAddressNumber = Convert.ToInt32(receivingXMLDoc.Element("Result")
            //         .Element("AddressNumber").Value);
            //}
            //catch (Exception e)
            //{
            //    opStatus = ContactOperationStatus.CreateFromException("Error updating address in CARE: " + e.Message, e);
            //    opStatus.Status = false;

            //}
            //}
            return opStatus;
        }
Пример #9
0
        private ContactOperationStatus CreateContact(Contact contact)
        {
            var opStatus = new ContactOperationStatus { Status = true };

            try
            {

                var careWebServices = new CARECustomerPortalExtensions.CareWebServices.NDataAccessSoapClient();

                //TODO: do we need the registered users table?
                //TODO: CARE - set up fscweb (FSC Web) in users table
                //TODO: CARE - set up WCP (Website Customer Portal) in source table
                string sendXML = String.Format("<Parameters>" +
                                               "<Title>{0}</Title>" +
                                               "<Forenames>{1}</Forenames>" +
                                               "<Surname>{2}</Surname>" +
                                               "<Address>{3}</Address>" +
                                               "<Town>{4}</Town>" +
                                               "<County>{5}</County>" +
                                               "<Country>{6}</Country>" +
                                               "<Postcode>{7}</Postcode>" +
                                               "<DirectNumber>{8}</DirectNumber>" +
                                               "<MobileNumber>{9}</MobileNumber>" +
                                               "<EmailAddress>{10}</EmailAddress>" +
                                               "<UserLogname>fscweb</UserLogname>" +
                                               "<Source>WCP</Source>" +
                                               "</Parameters>",
                                               contact.Title, contact.FirstName, contact.LastName,
                                               contact.Address1 + "\n" + contact.Address2 + "\n" + contact.Address3,
                                               contact.Town, contact.County, contact.Country, contact.Postcode, contact.Telephone,
                                               contact.Mobile, contact.Email
                    );

                //Load xmldata into XDocument Object
                XDocument sendingXMLDoc = XDocument.Parse(sendXML);

                string returnXML = careWebServices.AddContact(sendingXMLDoc.ToString());

                XDocument receivingXMLDoc = XDocument.Parse(returnXML);

                XElement resultElement = receivingXMLDoc.Element("Result");
                if (resultElement.Element("ErrorMessage") != null)
                {
                    string errorMessage = resultElement.Element("ErrorMessage").Value;
                    opStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                        .CreateFromException("Error storing contact in CARE: " + errorMessage, new CareException());
                    opStatus.Status = false;
                }
                else
                {

                    int careContactNumber = Convert.ToInt32(receivingXMLDoc.Element("Result")
                                                                           .Element("ContactNumber").Value);
                    int careAddressNumber = Convert.ToInt32(receivingXMLDoc.Element("Result")
                                                                           .Element("AddressNumber").Value);
                    contact.ExternalContactNumber = careContactNumber;
                    contact.ExternalAddressNumber = careAddressNumber;
                    opStatus.Message = "The contact has been successfully created.";
                    opStatus.Contact = contact;
                }
            }
            catch (Exception e)
            {
                opStatus = OperationStatusExceptionHelper<ContactOperationStatus>
                    .CreateFromException("Error storing contact in CARE: " + e.Message, e);
                opStatus.Status = false;
            }
            return opStatus;
        }
Пример #10
0
        public ContactOperationStatus GetContact(int externalContactNumber)
        {
            var opStatus = new ContactOperationStatus { Status = true };
            Contact contact = new Contact();

            string sendXml = String.Format("<Parameters>" +
                "<ContactNumber>{0}</ContactNumber>" +
                //"<AddressNumber>{1}</AddressNumber>" +
                "</Parameters>",
                externalContactNumber);//, externalAddressNumber

            //Load xmldata into XDocument Object
            XDocument sendingXMLDoc = XDocument.Parse(sendXml);

            CustomerPortalExtensions.CareWebServices.NDataAccessSoapClient careWebServices = new CustomerPortalExtensions.CareWebServices.NDataAccessSoapClient();
            string returnXML = careWebServices.SelectContactData(CustomerPortalExtensions.CareWebServices.XMLContactDataSelectionTypes.xcdtContactInformation, sendingXMLDoc.ToString());

            XDocument receivingXMLDoc = XDocument.Parse(returnXML);
            try
            {
                contact.ExternalContactNumber = externalContactNumber;

                XElement contactRow = (receivingXMLDoc.Element("ResultSet").Element("DataRow"));
                contact.ExternalAddressNumber = Convert.ToInt32(contactRow.Element("AddressNumber").Value);
                contact.Title = contactRow.Element("Title").Value;
                contact.FirstName = contactRow.Element("Forenames").Value;
                contact.LastName = contactRow.Element("Surname").Value;
                //TODO: need to split address back out into Address1,2,3 etc
                contact.Address1 = contactRow.Element("Address").Value;
                contact.Town = contactRow.Element("Town").Value;
                contact.County = contactRow.Element("County").Value;
                contact.Postcode = contactRow.Element("Postcode").Value;
                contact.Country = contactRow.Element("CountryCode").Value;
                contact.Status = true;
                opStatus.Contact = contact;
            }
            catch (Exception e)
            {
                opStatus = OperationStatusExceptionHelper<ContactOperationStatus>.
                    CreateFromException("Error retrieving contact from CARE: " + e.Message, e);
                opStatus.Status = false;
            }
            return opStatus;
        }