Пример #1
0
        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
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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"));
        }
Пример #5
0
        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));
        }