public ActionResult SaveContactInfo(DataAccess.Models.ProductDetail.Advisor.AdvisorContactInfo model) { if (ModelState.IsValidField("AdvisorMasterEntityId")) { var isValid = AdvisorViewManager.ValidateProfileAddresses(model, ModelState); if (!isValid) { var thePartial = PartialView("EditorTemplates/ContactInfo", model); Response.StatusCode = (int)HttpStatusCode.PartialContent; return(thePartial); } else { var success = AdvisorContactInfoManager.SaveContactInfo(FederatedLoginClient.User.UserMasterEntityId, model); if (success) { ProfileAddressManager.UpdateListForNewCity(model.Addresses); return(new HttpStatusCodeResult(HttpStatusCode.OK)); } else { return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError)); } } } else { // no MEID can't deal... return(new HttpNotFoundResult()); } }
public JsonResult GetCountries() { var jsonResult = string.Empty; var allCountries = ProfileAddressManager.GetCountries(); return(Json(allCountries, JsonRequestBehavior.AllowGet)); }
public ActionResult ContactInfoEditor(DataAccess.Models.ProductDetail.Advisor.AdvisorContactInfo model) { switch (model.ItemTypeToAdd) { case ProfileItemType.Phone: model.PhoneNumbers = model.PhoneNumbers ?? new List <ProfilePhoneNumber>(); model.PhoneNumbers.Add(new ProfilePhoneNumber { Status = ProfileItemStatus.Insert }); break; case ProfileItemType.Email: model.EmailAddresses = model.EmailAddresses ?? new List <ProfileEmailAddress>(); model.EmailAddresses.Add(new ProfileEmailAddress { Status = ProfileItemStatus.Insert }); break; case ProfileItemType.Website: model.WebSites = model.WebSites ?? new List <ProfileWebSite>(); model.WebSites.Add(new ProfileWebSite { Status = ProfileItemStatus.Insert, EntityType = model.EntityType }); break; case ProfileItemType.Messenger: model.Messengers = model.Messengers ?? new List <ProfileInstantMessenger>(); model.Messengers.Add(new ProfileInstantMessenger { Status = ProfileItemStatus.Insert, EntityType = model.EntityType }); break; case ProfileItemType.Address: model.Addresses = model.Addresses ?? new List <ProfileAddress>(); model.Addresses.Add(new ProfileAddress { Status = ProfileItemStatus.Insert }); break; default: ProfileAddressManager.DisambiguateAddressCity(model.PrimaryAddress, true); ProfileAddressManager.DisambiguateAddressCities(model.Addresses, true); this.ModelState.Clear(); // prevent Html helper from using unaltered (ambiguous) address cities break; } return(PartialView("EditorTemplates/ContactInfo", model)); }
public static bool ValidateProfileAddresses(AdvisorContactInfo info, ModelStateDictionary modelState) { TpMapOptions mapOptions; var maps = new Dictionary <string, string>(); var passed = true; var address = info.PrimaryAddress; var validateNamePrefix = "PrimaryAddress"; var isValid = ProfileAddressManager.ValidateProfileAddress(address, modelState, validateNamePrefix, out mapOptions); passed &= isValid; if (mapOptions != null) { maps.Add("", Json.Serialize(mapOptions)); } if (info.Addresses.IsNotNullOrEmpty()) { for (var i = 0; i < info.Addresses.Count; i++) { validateNamePrefix = string.Format("Addresses[{0}]", i); isValid = ProfileAddressManager.ValidateProfileAddress(info.Addresses[i], modelState, validateNamePrefix, out mapOptions); passed &= isValid; if (mapOptions != null) { maps.Add(info.Addresses[i].City, Json.Serialize(mapOptions)); } } } if (maps.Count > 0) { info.MapsJson = maps; } return(passed); }
public AdvisorDetailViewModel GetAdvisorDetailViewModel(int advisorId, bool isEdit) { var manager = new AdvisorManager(); var detailInfo = manager.GetProductDetailInfo(advisorId); if (detailInfo == null) { return(null); } detailInfo.IsEditable = AdvisorIsEditable(detailInfo.AdvisorMasterEntityId, detailInfo.AdvisorCompanyMasterEntityId, detailInfo.AdvisorCompanyParentMasterEntityId); detailInfo.IsPreview = false; detailInfo.AdvisorStatus = TypeChanger.DoEnum(detailInfo.Status, ProfileStatus.Unknown); detailInfo.Certifications = AdvisorInfoManager.GetAdvisorCertifications(detailInfo.AdvisorCertificationsXml); detailInfo.VisitedPlaces = AdvisorInfoManager.GetVisitedPlaces(detailInfo.AdvisorPlacesVisitedXml); detailInfo.Interests = BaseDetailInfoHelpers.GetTravelElements(detailInfo.AdvisorInterestTypesXml); detailInfo.SpecialtyDestinations = BaseDetailInfoHelpers.GetTravelElements(detailInfo.AdvisorSpecialtyCountriesXml); detailInfo.Languages = BaseDetailInfoHelpers.GetTravelElements(detailInfo.AdvisorLanguagesXml); detailInfo.AlliancePrograms = BaseDetailInfoHelpers.GetTravelElements(detailInfo.AdvisorAllianceProgramsXml); detailInfo.ConditionalLeadsName = AdvisorInfoManager.GetConditionalLeadsName(detailInfo.AlliancePrograms); detailInfo.AdvisorPrimarydAddress = ProfileContactInfoManagerBase.GetPrimaryAddress(detailInfo.ProfileAddressXml); ProfileAddressManager.DisambiguateAddressCity(detailInfo.AdvisorPrimarydAddress, isEdit); if (HttpContext.Current.Request.QueryString["consumer"] == "1") { detailInfo.IsEditable = false; detailInfo.IsPreview = true; } var user = FederatedLoginClient.User; var viewModel = new AdvisorDetailViewModel { AdvisorMasterEntityId = detailInfo.AdvisorMasterEntityId, Status = detailInfo.AdvisorStatus, AdvisorName = string.Format("{0} {1}", detailInfo.AdvisorFirstName, detailInfo.AdvisorLastName) }; viewModel.ShowReviewsTab = ReviewHelper.ShowReview(detailInfo.TotalCompletedReviews, detailInfo.TotalBlockedReviews, detailInfo.TotalActiveReviews); if (viewModel.ShowReviewsTab) { viewModel.ReviewsInfoJson = new RatingAndReviewManager().GetReviewsInfoJsonForAdvisor(detailInfo); } viewModel.HeaderInfoPlus = new AdvisorHeaderInfoPlus { Header = new AdvisorHeaderInfoViewModel { AdvisorHeaderInfo = AdvisorInfoManager.BuildHeaderInfo(detailInfo) }, ContactAdvisor = GetContactAdvisor(detailInfo), ReviewBadge = ReviewHelper.BuildBadgeModelForAdvisorDetailPage(detailInfo) }; viewModel.AboutMePlus = new AdvisorAboutMePlus { Alliances = AdvisorInfoManager.BuildAboutMe(detailInfo), Overview = GetProfileOverviewInfo(detailInfo), IsActive = detailInfo.AdvisorIsActive, CompanyIsActive = detailInfo.AdvisorCompanyIsActive, AdvisorMasterEntityId = advisorId }; if (user.IsComposerUser) { AddCommunityInfoForAdvisor(viewModel.AboutMePlus); } viewModel.DetailInfo = detailInfo; viewModel.ContactInfo = AdvisorContactInfoManager.BuildContactInfo(detailInfo); viewModel.CobrandInfo = new AdvisorCobrandInfoViewModel { AdvisorCobrandInfo = AdvisorCobrandAndSettingsManager.BuildCobrandInfo(detailInfo) }; ProfileAddressManager.DisambiguateAddressCity(viewModel.ContactInfo.PrimaryAddress, isEdit); ProfileAddressManager.DisambiguateAddressCities(viewModel.ContactInfo.Addresses, isEdit); // note that if an advisor is using the agency default personalization, the advisor personalized address will be null var personalizedAddress = TouchPoints.Framework.Utilities.Xml.Deserialize <PersonalizationAddress>(detailInfo.AdvisorPersonalizedAddressXml) ?? new PersonalizationAddress(); detailInfo.AdvisorPersonalizedAddress = personalizedAddress; viewModel.AdvisorPersonalization = new AdvisorPersonalizationInfo { AdvisorName = detailInfo.AdvisorPersonalizedName, AgencyName = detailInfo.AgencyPersonalizedName, DoingBusinessAs = detailInfo.AdvisorPersonalizedDoingBusinessAs, AddressLine1 = personalizedAddress.AddressLine1, AddressLine2 = personalizedAddress.AddressLine2, City = personalizedAddress.City, RegionNameEng = personalizedAddress.State, RegionId = personalizedAddress.RegionId, RegionCode = personalizedAddress.RegionCode, CountryNameEng = personalizedAddress.Country, CountryId = personalizedAddress.CountryId, PostalCode = personalizedAddress.PostalCode, Phone = detailInfo.AdvisorPersonalizedPrimaryPhone, SecondPhone = detailInfo.AdvisorPersonalizedSecondaryPhone, WebAddress = detailInfo.AdvisorPersonalizedWebsite, Email = detailInfo.AdvisorPersonalizedEmail, StateOfSellerId = detailInfo.AdvisorPersonalizedStateOfSellerId, LogoUrl = detailInfo.AdvisorCompanyLogo, AssociatedMasterEntityId = detailInfo.AdvisorMasterEntityId, AssociatedParentMasterEntityId = detailInfo.AdvisorCompanyParentMasterEntityId, UseAgencyDefaultPersonalization = detailInfo.UseAgencyDefaultPersonalization }; personalizedAddress = Xml.Deserialize <PersonalizationAddress>(detailInfo.AgencyPersonalizedAddressXml) ?? new PersonalizationAddress(); viewModel.AgencyPersonalization = new AgencyPersonalizationInfo { AgencyName = detailInfo.AgencyPersonalizedName, AddressLine1 = personalizedAddress.AddressLine1, AddressLine2 = personalizedAddress.AddressLine2, City = personalizedAddress.City, RegionNameEng = personalizedAddress.State, RegionId = personalizedAddress.RegionId, RegionCode = personalizedAddress.RegionCode, CountryNameEng = personalizedAddress.Country, CountryId = personalizedAddress.CountryId, PostalCode = personalizedAddress.PostalCode, Phone = detailInfo.AgencyPersonalizedPrimaryPhone, SecondPhone = detailInfo.AgencyPersonalizedSecondaryPhone, WebAddress = detailInfo.AgencyPersonalizedWebsite, Email = detailInfo.AgencyPersonalizedEmail, StateOfSellerId = detailInfo.AgencyPersonalizedStateOfSellerId, LogoUrl = detailInfo.LogoUrl, AssociatedMasterEntityId = detailInfo.AdvisorCompanyMasterEntityId, AssociatedParentMasterEntityId = detailInfo.AdvisorCompanyParentMasterEntityId, }; viewModel.Information = new AdvisorInformationViewModel { AdvisorInformation = AdvisorInfoManager.BuildAdminInfo(detailInfo) }; viewModel.Specialties = new AdvisorTravelSpecialtiesViewModel { AdvisorTravelSpecialties = AdvisorInfoManager.BuildTravelSpecialties(detailInfo) }; // fill in personalization IC status, since the value in DetailInfo may be unreliable viewModel.AdvisorPersonalization.IsIndependentContractor = (viewModel.Information.AdvisorType.TypeId == AdvisorInfoManager.IndependentContractorTypeId); // TODO: only need these for edit by certain people with permissions if (null != viewModel.Specialties) { viewModel.Specialties.SpecialtyCountriesLookup = SpecialtyDestinations.Get(null, ProfileType.Advisor); } viewModel.OutOfOffice = new AdvisorOutOfOffice(); viewModel.Settings = AdvisorCobrandAndSettingsManager.BuildAdvisorSettings(detailInfo); AgencyViewManager.CalculateFieldLevelPermissions(viewModel.Settings, user); viewModel.SupplierMarketingOptions = new SupplierMarketingOptionsViewManager().GetSupplierMarketingOptionsForMember(advisorId); viewModel.SupplierMarketingOptions.MemberHasOverrideRole = detailInfo.OverrideAgencySupplierMarketing; viewModel.SupplierMarketingOptions.AgencyMeid = detailInfo.AdvisorCompanyMasterEntityId; viewModel.ConsumerNotifications = new ConsumerNotificationsViewManager().GetNotificationsForAdvisor(advisorId, viewModel.Settings.Meid, viewModel.Settings.ParentMeid); viewModel.SecurityData = new AdvisorProfileSecurityData(); var securityModel = TouchPoints.Framework.Utilities.Xml.Deserialize <StaffSecurityModelXml>(detailInfo.ProfileRolesXml); viewModel.AdvisorSecurity = SecurityManager.BuildAdvisorSecurity(securityModel); viewModel.HotelBooking = new AdvisorHotelBookingViewModel(); viewModel.HotelBooking.HotelBooking = new AdvisorHotelBooking { AdvisorMasterEntityId = viewModel.AdvisorMasterEntityId, AgentId = detailInfo.AgentId, BookingPrefatoryCode = detailInfo.BookingPrefatoryCode, BookingPseudoCityCode = detailInfo.BookingPseudoCityCode, BookingQueueNumber = detailInfo.BookingQueueNumber, AgentInterfaceId = detailInfo.AgentInterfaceId, SameAsAgency = detailInfo.IsBookingSameAsAgency }; viewModel.AdvisorLogoExists = !String.IsNullOrEmpty(viewModel.AdvisorPersonalization.LogoUrl); viewModel.AgencyDefaultLogoExists = !String.IsNullOrEmpty(viewModel.AgencyPersonalization.LogoUrl); viewModel.PersonalizationGuidelinesUrl = Config.AppSettings.PersonalizationGuidelinesUrl; return(viewModel); }