public GetDropdownListResponse GetAll(GetDropdownListRequest request) { GetDropdownListResponse response = new GetDropdownListResponse(); IEnumerable <Dropdown> dropdownValues = dropdownRepository.FindAll(request.Query, request.Limit, request.PageNumber, request.AccountID); if (dropdownValues == null) { response.Exception = GetDropdownvaluesNotFoundException(); } else { IEnumerable <DropdownViewModel> list = Mapper.Map <IEnumerable <Dropdown>, IEnumerable <DropdownViewModel> >(dropdownValues); response.DropdownValuesViewModel = list; response.TotalHits = dropdownRepository.FindAll(request.Query, request.AccountID).Count(); } return(response); }
public IEnumerable <DropdownViewModel> AddDropdownValues(int?accountId) { string dropdownValuesKey = "dropdownvalues" + accountId; IEnumerable <DropdownViewModel> dropdownValues = new List <DropdownViewModel>(); IEnumerable <Dropdown> dropdowns = dropdownRepository.FindAll("", accountId).ToList(); if (dropdowns.Any()) { dropdownValues = Mapper.Map <IEnumerable <Dropdown>, IEnumerable <DropdownViewModel> >(dropdowns); } cacheManager.Add(dropdownValuesKey, dropdownValues, DateTimeOffset.UtcNow.AddMinutes(2)); return(cacheManager.Get <IEnumerable <DropdownViewModel> >(dropdownValuesKey)); }
protected override void ExecuteInternal(IJobExecutionContext context) { Log.Informational("Entering into APILeadSubmission processor"); try { GetAPILeadSubmissionDataResponse response = new GetAPILeadSubmissionDataResponse(); response = _contactService.GetAPILeadSubMissionData(); string spamRemarks = string.Empty; while (response != null && response.APILeadSubmissionViewModel != null) { try { int contactID = 0; short roleId = _userRepository.GettingRoleIDByUserID(response.APILeadSubmissionViewModel.OwnerID); PersonViewModel viewModel = JsonConvert.DeserializeObject <PersonViewModel>(response.APILeadSubmissionViewModel.SubmittedData); viewModel.AccountID = response.APILeadSubmissionViewModel.AccountID; viewModel.OwnerId = response.APILeadSubmissionViewModel.OwnerID; viewModel.LastUpdatedBy = response.APILeadSubmissionViewModel.OwnerID; viewModel.FirstName = !string.IsNullOrEmpty(viewModel.FirstName) ? viewModel.FirstName.Trim() : viewModel.FirstName; viewModel.LastName = !string.IsNullOrEmpty(viewModel.LastName) ? viewModel.LastName.Trim() : viewModel.LastName; if (viewModel.Phones.IsAny()) { viewModel.Phones.Each(pn => { pn.Number = !string.IsNullOrEmpty(pn.Number) ? pn.Number.Trim() : pn.Number; }); } if (viewModel.CustomFields.IsAny()) { viewModel.CustomFields.Each(cm => { cm.Value = !string.IsNullOrEmpty(cm.Value) ? cm.Value.Trim() : cm.Value; }); } Dictionary <string, string> fields = GetContactFields(viewModel); bool isSpam = _spamService.SpamCheck(fields, viewModel.AccountID, response.APILeadSubmissionViewModel.IPAddress, 0, false, out spamRemarks); if (!isSpam) { #region NotSpam var dropdownValues = _dropdownRepository.FindAll("", 10, 1, viewModel.AccountID); IEnumerable <DropdownViewModel> dropdownViewModel = Mapper.Map <IEnumerable <Dropdown>, IEnumerable <DropdownViewModel> >(dropdownValues); string primaryEmail = viewModel.Emails.IsAny() ? viewModel.Emails.Where(e => e.IsPrimary).Select(s => s.EmailId).FirstOrDefault() : ""; if (string.IsNullOrEmpty(viewModel.FirstName) && string.IsNullOrEmpty(viewModel.LastName) && !string.IsNullOrEmpty(primaryEmail) && !IsValidEmail(primaryEmail)) { _contactRepository.UpdateAPILeadSubmissionData(null, (byte)SubmittedFormStatus.Fail, "Bad Email", response.APILeadSubmissionViewModel.APILeadSubmissionID); return; } var duplicatesResponse = _contactService.CheckIfDuplicate(new CheckContactDuplicateRequest() { PersonVM = viewModel }); var leadSourceField = viewModel.SelectedLeadSource.IsAny() ? viewModel.SelectedLeadSource.FirstOrDefault() : null; var communityField = viewModel.Communities.IsAny() ? viewModel.Communities.FirstOrDefault() : null; var leadSourceDropDown = dropdownViewModel.Where(c => c.DropdownID == (byte)DropdownFieldTypes.LeadSources).FirstOrDefault().DropdownValuesList; var leadSourceDropDownValue = new DropdownValueViewModel(); if (leadSourceField != null) { Log.Verbose("Attempting to fetch Lead Source drop down value submitted"); leadSourceDropDownValue = leadSourceDropDown.Where(e => e.DropdownValueID == leadSourceField.DropdownValueID).FirstOrDefault(); } if (leadSourceDropDownValue == null || leadSourceField == null) { Log.Verbose("Attempting to fetch Next Gen account default Lead Source drop down value"); leadSourceDropDownValue = leadSourceDropDown.Where(e => e.IsDefault).FirstOrDefault(); if (leadSourceDropDownValue == null) { Log.Verbose("Attempting to fetch First Lead Source drop down value"); leadSourceDropDownValue = leadSourceDropDown.FirstOrDefault(); if (leadSourceDropDownValue == null) { throw new UnsupportedOperationException("[|The accound do not have the specified or any lead source configured. Please contact administrator|]"); } } } DropdownValueViewModel leadSourceDropdownViewModel = new DropdownValueViewModel() { AccountID = viewModel.AccountID, DropdownID = (byte)ContactFields.LeadSource, DropdownValue = leadSourceDropDownValue.DropdownValue, DropdownValueID = leadSourceDropDownValue.DropdownValueID }; var communityDropdownViewModel = new DropdownValueViewModel(); if (communityField != null) { IEnumerable <DropdownValueViewModel> communities = dropdownViewModel.Where(c => c.DropdownID == (byte)DropdownFieldTypes.Community).FirstOrDefault().DropdownValuesList; DropdownValueViewModel selectedcommunity = communities.Where(x => x.DropdownValueID == communityField.DropdownValueID).FirstOrDefault(); if (selectedcommunity != null) { communityDropdownViewModel = new DropdownValueViewModel() { AccountID = viewModel.AccountID, DropdownID = (byte)ContactFields.Community, DropdownValue = selectedcommunity.DropdownValue, DropdownValueID = selectedcommunity.DropdownValueID }; } } if (duplicatesResponse != null && duplicatesResponse.Contacts.IsAny()) { Log.Informational("Entering into APILeadSubmission Updation"); viewModel.ContactID = duplicatesResponse.Contacts.FirstOrDefault().Id; viewModel.ContactSource = Entities.ContactSource.API; var existingContact = duplicatesResponse.Contacts.FirstOrDefault() as Person; var leadSource = existingContact.LeadSources != null?existingContact.LeadSources.Select(e => e.Id).ToList() : new List <short>(); PersonViewModel existingContactViewModel = Mapper.Map <Person, PersonViewModel>(existingContact); if (leadSource.IndexOf(leadSourceDropdownViewModel.DropdownValueID) == -1) { existingContactViewModel.SelectedLeadSource = existingContactViewModel.SelectedLeadSource ?? new List <DropdownValueViewModel>(); existingContactViewModel.SelectedLeadSource = existingContactViewModel.SelectedLeadSource.Append(leadSourceDropdownViewModel); } var community = existingContact.Communities != null?existingContact.Communities.Select(e => e.Id).ToList() : new List <short>(); if (communityDropdownViewModel != null && community.IndexOf(communityDropdownViewModel.DropdownValueID) == -1) { existingContactViewModel.Communities = existingContactViewModel.Communities ?? new List <DropdownValueViewModel>(); existingContactViewModel.Communities = existingContactViewModel.Communities.Append(communityDropdownViewModel); } PersonViewModel updateViewModel = GetUpdatedPersonData(existingContactViewModel, viewModel); updateViewModel.IncludeInReports = true; UpdatePersonResponse updatePersonResult = _contactService.UpdatePerson(new UpdatePersonRequest() { PersonViewModel = updateViewModel, AccountId = response.APILeadSubmissionViewModel.AccountID, RequestedBy = response.APILeadSubmissionViewModel.OwnerID, RoleId = roleId, RequestedFrom = RequestOrigin.API }); if (updatePersonResult.PersonViewModel.ContactID > 0) { contactID = updatePersonResult.PersonViewModel.ContactID; _contactRepository.UpdateAPILeadSubmissionData(updatePersonResult.PersonViewModel.ContactID, (byte)SubmittedFormStatus.Completed, "Completed", response.APILeadSubmissionViewModel.APILeadSubmissionID); } } else { Log.Informational("Entering into APILeadSubmission Insertion"); viewModel.FirstContactSource = Entities.ContactSource.API; viewModel.CreatedBy = response.APILeadSubmissionViewModel.OwnerID; viewModel.CreatedOn = DateTime.Now.ToUniversalTime(); viewModel.SelectedLeadSource = new List <DropdownValueViewModel>(); viewModel.SelectedLeadSource = viewModel.SelectedLeadSource.Append(leadSourceDropdownViewModel); viewModel.LastUpdatedOn = DateTime.Now.ToUniversalTime(); if (communityField != null && communityDropdownViewModel.DropdownValueID > 0) { viewModel.Communities = new List <DropdownValueViewModel>(); viewModel.Communities = viewModel.Communities.Append(communityDropdownViewModel); } //if (viewModel.LifecycleStage > 0) //{ IEnumerable <DropdownValueViewModel> lifecycles = dropdownViewModel.Where(c => c.DropdownID == (byte)DropdownFieldTypes.LifeCycle).FirstOrDefault().DropdownValuesList; if (!lifecycles.Where(l => l.DropdownValueID == viewModel.LifecycleStage).IsAny()) { viewModel.LifecycleStage = lifecycles.Where(l => l.IsDefault).Select(s => s.DropdownValueID).FirstOrDefault(); } //} if (viewModel.Phones.IsAny()) { IEnumerable <DropdownValueViewModel> phones = dropdownViewModel.Where(c => c.DropdownID == (byte)DropdownFieldTypes.PhoneNumberType).FirstOrDefault().DropdownValuesList; viewModel.Phones.Each(p => { if (!phones.Where(t => t.DropdownValueID == p.PhoneType).IsAny()) { p.PhoneType = phones.Where(t => t.IsDefault).Select(s => s.DropdownValueID).FirstOrDefault(); } if (!string.IsNullOrEmpty(p.Number) && (p.Number.Length < 10 || p.Number.Length > 15)) { p.IsDeleted = true; } }); viewModel.Phones = viewModel.Phones.Where(p => p.IsDeleted == false).ToList(); } viewModel.IncludeInReports = true; InsertPersonResponse personResult = _contactService.InsertPerson(new InsertPersonRequest() { PersonViewModel = viewModel, AccountId = response.APILeadSubmissionViewModel.AccountID, RequestedBy = response.APILeadSubmissionViewModel.OwnerID, RoleId = roleId, RequestedFrom = RequestOrigin.API }); if (personResult.PersonViewModel.ContactID > 0) { contactID = personResult.PersonViewModel.ContactID; _contactRepository.UpdateAPILeadSubmissionData(personResult.PersonViewModel.ContactID, (byte)SubmittedFormStatus.Completed, "Completed", response.APILeadSubmissionViewModel.APILeadSubmissionID); } } if (contactID > 0 && viewModel.SelectedLeadSource.IsAny()) { //for Indexing Contact. _formRepository.ScheduleIndexing(contactID, IndexType.Contacts, true); if (response.APILeadSubmissionViewModel.FormID != 0) { _formService.InsertFormSubmissionEntry(contactID, new SubmittedFormViewModel() { FormId = response.APILeadSubmissionViewModel.FormID, SubmittedOn = DateTime.UtcNow, SubmittedData = response.APILeadSubmissionViewModel.SubmittedData, AccountId = response.APILeadSubmissionViewModel.AccountID }, viewModel.SelectedLeadSource.FirstOrDefault().DropdownValueID); } } #endregion } else { _contactRepository.UpdateAPILeadSubmissionData(null, (byte)SubmittedFormStatus.Spam, spamRemarks, response.APILeadSubmissionViewModel.APILeadSubmissionID); } } catch (Exception ex) { ex.Data.Clear(); ex.Data.Add("APILeadSubmissinID", response.APILeadSubmissionViewModel.APILeadSubmissionID); Log.Error("Error While Processing APILeadSubmission", ex); _contactRepository.UpdateAPILeadSubmissionData(null, (byte)SubmittedFormStatus.Fail, ex.Message, response.APILeadSubmissionViewModel.APILeadSubmissionID); } finally { response = _contactService.GetAPILeadSubMissionData(); } } } catch (Exception ex) { Log.Error("Error while APILeadSubmission", ex); } }