Ejemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] CreateLeadDTO obj)
        {
            try
            {
                var createdLeadObj = await _leadsService.Create(obj);

                if (createdLeadObj.IsError)
                {
                    return(BadRequest(createdLeadObj));
                }
                return(Ok(createdLeadObj));
            }
            catch (Exception ex)
            {
                var error = new Error("", ex.Message, ErrorTypeKeys.EndpointError.ToString());
                return(BadRequest(error));
            }
        }
        private async Task <List <string> > ValidateLeadCreationParams(CreateLeadDTO leadObj)
        {
            try
            {
                List <string> lstValidationMsg = new List <string>();
                if (string.IsNullOrEmpty(leadObj.FirstName))
                {
                    lstValidationMsg.Add("First name is required.");
                }
                if (string.IsNullOrEmpty(leadObj.LastName))
                {
                    lstValidationMsg.Add("Last name is required.");
                }
                if (string.IsNullOrEmpty(leadObj.Email))
                {
                    lstValidationMsg.Add("Email is required.");
                }
                if (string.IsNullOrEmpty(leadObj.Phone))
                {
                    lstValidationMsg.Add("Phone is required.");
                }
                if (string.IsNullOrEmpty(leadObj.Password))
                {
                    lstValidationMsg.Add("Password is required.");
                }
                if (!Extensions.IsValidEmail(leadObj.Email))
                {
                    lstValidationMsg.Add("Email is invalid.");
                }
                if (!Enum.IsDefined(typeof(LeadTypeEnum), leadObj.LeadType))
                {
                    lstValidationMsg.Add("Invalid leadtype. Should be buyer, lender or both.");
                }

                return(lstValidationMsg);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
        public async Task <ReturnObject <CreateLeadReturnDTO> > Create(CreateLeadDTO leadObj)
        {
            try
            {
                // Validate leadObj params
                var validationObj = await ValidateLeadCreationParams(leadObj);

                if (validationObj.Count > 0)
                {
                    var validationMsg = string.Concat(validationObj.ToArray());
                    return(ReturnHandler <CreateLeadReturnDTO> .GetReturnObject(true, null, validationMsg, null));
                }

                // make an Sierra API request to create lead
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(_sierraConfig.Value.BaseUrl);
                    client.DefaultRequestHeaders.Add("Sierra-ApiKey", _sierraConfig.Value.APIKey);
                    var stringPayload = await Task.Run(() => JsonConvert.SerializeObject(leadObj));

                    var httpContent  = new StringContent(stringPayload, Encoding.UTF8, "application/json");
                    var httpResponse = await client.PostAsync(apiName, httpContent);

                    var responseContent = await httpResponse.Content.ReadAsStringAsync();

                    var apiResponseObj = JsonConvert.DeserializeObject <CreateLeadResponseDTO>(responseContent);
                    if (!apiResponseObj.Success)
                    {
                        return(ReturnHandler <CreateLeadReturnDTO> .GetReturnObject(true, null, apiResponseObj.ErrorMessage, null));
                    }
                }
                return(ReturnHandler <CreateLeadReturnDTO> .GetReturnObject(false, null, "Lead created successfully.", null));
            }
            catch (Exception ex)
            {
                var error = new Error("", ex.Message, ErrorTypeKeys.ServiceError.ToString());
                return(ReturnHandler <CreateLeadReturnDTO> .GetReturnObject(true, error, "Some Error occurred while creating lead.", null));
            }
        }