public async Task HookLead([FromBody] HookVM data) { // Gravity Forms separates form fields with "----------" by considering a section field that come right after a page break // So, we can separate lead details by using "--------------------------------" // try { var customer = this.CreateCustomerEntity(data); if (_cusRepo.IsCustomerExisted(data.EMail)) { customer = _cusRepo.GetByEmail(customer.EMail); } else { _cusRepo.Add(customer); } var lead = this.CreateLeadEntity(data, customer); _leadRepo.Add(lead, "WordPress"); if (_uow.Commit()) { //RedirectToAction(nameof(MessageController.SendCompanyLeadHooked), nameof(EnumController.Message), new { leadId = lead.Id }); await _messageController.SendCompanyLeadHooked(lead.Id, this.Url, this.Request); } else { } } catch (Exception e) { // logging here } }
public LeadResponse ChargifySuscription(string subscription_id, string customer_id) { var response = new LeadResponse(); SubscriptionService chargifyService = new SubscriptionService(); ISubscription subscription = chargifyService.GetSubscription(int.Parse(subscription_id)); ICustomer customerResult = subscription.Customer; try { var leadRepository = new LeadRepository(); var newLead = new Lead() { Aliases = "", CountryCode = "USA(+1)", DateCreated = DateTime.Now, DateUpdated = DateTime.Now, Email = customerResult.Email, FirstName = customerResult.FirstName, LastName = customerResult.LastName, Keywords = "", PhoneNumber = customerResult.Phone, MarketSegments = "", OtherMarketSegments = "", IntakeEmailSentDate = DateTime.Now, IntakeToken = subscription_id, IntakeUrl = "", IsActive = true, IsIntakeAnswered = false }; leadRepository.Add(newLead); leadRepository.SaveChanges(); var currentLead = newLead; if (currentLead != null) { response.Lead = new LeadDto() { idLead = currentLead.idLead, FirstName = currentLead.FirstName, LastName = currentLead.LastName, CountryCode = currentLead.CountryCode, PhoneNumber = currentLead.PhoneNumber, Email = currentLead.Email }; response.Acknowledgment = true; response.Message = "Success"; } else { response.Acknowledgment = false; response.Message = "Unable to Find a lead with that token"; } } catch (Exception ex) { response.Acknowledgment = false; response.Message = "Error Updating a Lead: " + ex.Message; } return(response); }
public LeadResponse CreateLead(LeadDto leadDto, bool sendMail) { var response = new LeadResponse(); try { UserService _userService = new UserService(); // _userService.GetUserInformation if (ValidateLeadEmail(leadDto.Email)) { var leadRepository = new LeadRepository(); var newLead = new Lead() { Aliases = leadDto.Aliases, CountryCode = leadDto.CountryCode, DateCreated = leadDto.DateCreated, DateUpdated = leadDto.DateUpdated, Email = leadDto.Email, FirstName = leadDto.FirstName, LastName = leadDto.LastName, Keywords = leadDto.Keywords, PhoneNumber = leadDto.PhoneNumber, MarketSegments = leadDto.MarketSegments, OtherMarketSegments = leadDto.OtherMarketSegments, IntakeEmailSentDate = DateTime.Now, IntakeToken = leadDto.IntakeToken, IntakeUrl = leadDto.IntakeUrl, IsActive = true, IsIntakeAnswered = false }; leadRepository.Add(newLead); leadRepository.SaveChanges(); leadDto.idLead = newLead.idLead; response.Acknowledgment = true; response.Message = "Success"; if (sendMail) { SendLeadConfirmationEmail(leadDto.Email, leadDto.FirstName, leadDto.IntakeUrl); } response.Lead = leadDto; } else { //response.Acknowledgment = false; //response.Message = "Error Adding a Lead: Email already exist"; //response.Lead = null; throw new System.ArgumentException("The email is already registered as a user. Please choose another one."); } } catch (Exception ex) { response.Acknowledgment = false; response.Message = ex.Message; response.Lead = null; } return(response); }
public IActionResult Add([FromBody] LeadDto dto) { //check number dto.MobileNo = PhoneNoModule.NormalizePhoneNoFormat(dto.MobileNo); if (!PhoneNoModule.isPhoneNumberValid(dto.MobileNo)) { return(BadRequest("Mobile number not valid. Needs to 12 Characters")); } if (!_leadTypeRepository.All.Any(s => s.Id == dto.LeadTypeId)) { return(BadRequest($"Lead type {dto.LeadTypeId} not valid")); } if (!string.IsNullOrWhiteSpace(dto.ProductBracket) && !_mobileProductRepository.GetProductsByBracket(dto.ProductBracket).Any()) { return(BadRequest($"No product found for {dto.ProductBracket}")); } //check if lead is active var currentlead = _leadRepo.FindOpenLeadByMobileNo(dto.MobileNo); if (currentlead.IsSome) { if (currentlead.Val.IsClosed == false) { currentlead.Val.Close(); _leadRepo.Update(currentlead.Val); } } //LeadTypeModule var leadType = new LeadType(dto.LeadTypeId); var lead = new Lead(leadType, dto.MobileNo, dto.FirstName.StrToOpt()) { ProductBracket = dto.ProductBracket.StrToOpt(), IdNumber = dto.IdNumber.StrToOpt(), Surname = dto.Surname.StrToOpt(), ExternalRefNo = dto.ExternalRefNo.StrToOpt(), BankName = dto.BankName.StrToOpt(), BankAccountType = dto.BankAccountType.StrToOpt(), BankAccountNo = dto.BankAccountNo.StrToOpt(), EmployerName = dto.EmployerName.StrToOpt(), EmployerNumber = dto.EmployerNumber.StrToOpt(), EmployerAddress = string.IsNullOrEmpty(dto.EmployerAddressStreet) ? None <Address>() : Some(new Address(dto.EmployerAddressStreet, dto.EmployerAddressSuburb, dto.EmployerAddressCity, dto.EmployerAddressPostalCode)), HomeAddress = string.IsNullOrEmpty(dto.HomeAddressStreet) ? None <Address>() : Some(new Address(dto.HomeAddressStreet, dto.HomeAddressSuburb, dto.HomeAddressCity, dto.HomeAddressPostalCode)) }; _leadRepo.Add(lead); return(Ok("Lead Created")); }
public IActionResult Post(string values) { var model = new Lead(); JsonConvert.PopulateObject(values, model); if (!TryValidateModel(model)) { return(BadRequest(GetFullErrorMessage(ModelState))); } _leadRepo.Add(model, User.Identity.Name); return(_uow.Commit() ? Ok() : StatusCode(Microsoft.AspNetCore.Http.StatusCodes.Status500InternalServerError)); }