public async Task <IActionResult> UpdateLead([FromRoute] Guid organizationId, [FromRoute] Guid leadId, [FromBody] LeadInput model) { var lead = await _leadService.UpdateLead(_accountManager, leadId, model); return(Ok(lead)); }
public Status createLead([FromBody] LeadInput input) { //string crmURL = VLCC.CustomerOrderData.WEBAPI.Properties.Settings.Default.CRMConnectionString; //CrmConnection connections = CrmConnection.Parse(crmURL); //OrganizationService orgService = new OrganizationService(connections); string UserName = VLCC.CustomerOrderData.WEBAPI.Properties.Settings.Default.UserName; string Password = VLCC.CustomerOrderData.WEBAPI.Properties.Settings.Default.Password; string service = VLCC.CustomerOrderData.WEBAPI.Properties.Settings.Default.Service; IOrganizationService orgService = ConnectToMSCRM(UserName, Password, service); Status status = new Status(); ClientEnquiry clientEnquiry = new ClientEnquiry(); if (!string.IsNullOrEmpty(input.PhoneNo)) { if (Regex.IsMatch(input.PhoneNo, @"\d{10}$")) { status = clientEnquiry.createEnquiry(input, orgService); } else { status.code = "201"; status.message = "Mobile number is invalid"; } } else { status.code = "201"; status.message = "Mobile Number is mandatory"; } return(status); }
public async Task <LeadResult> UpdateLead(Guid leadId, LeadInput model) { _logger.LogInformation(GetLogMessage("Updating Lead: {0}; Input: {@input}"), leadId, model); var retVal = new LeadResult() { LeadId = leadId }; var entity = await Repository.FirstOrDefaultAsync(n => n.Id == leadId); entity.InjectFrom <NullableInjection>(model); entity.UpdatedById = _userInfo.Value.UserId; entity.Updated = DateTimeOffset.UtcNow; entity.ObjectState = ObjectState.Modified; var leadResult = Repository.InsertOrUpdateGraph(entity, true); _logger.LogDebug(GetLogMessage("{0} records updated in database"), leadResult); if (leadResult > 0) { retVal.Succeeded = true; await Task.Run(() => { RaiseEvent(new LeadUpdatedEvent { LeadId = retVal.LeadId.Value }); }); } return(retVal); }
public async Task <IActionResult> CreateLead( [FromRoute] Guid organizationId, [FromBody] LeadInput model) { var result = await _leadService.CreateInternalLead(_marketer, model); return(Ok(result)); }
public Task <LeadResult> CreateInternalLead( IOrganizationMarketer ma, LeadInput model) { _logger.LogInformation(GetLogMessage("MA: {0}"), ma.OrganizationId); return(CreateLead(ma, ma.OrganizationId, model)); }
public async Task <IActionResult> UpdateLead([FromRoute] Guid organizationId, [FromRoute] Guid leadId, [FromBody] LeadInput model) { var ao = _agencyOwner.Value; var lead = await _leadService.UpdateLead(ao, leadId, model); return(Ok(lead)); }
// this call is unique in that it doesn't accept a principal and still returns a concrete output type public async Task <LeadResult> CreateInternalLead(Guid organizationId, LeadInput model) { _logger.LogInformation( GetLogMessage("Org: {0}"), organizationId); var organizationMarketer = await _marketerService.GetMarketerOrDefault <OrganizationMarketerOutput>(organizationId, null, model.ReferralCode); return(await CreateInternalLead(organizationMarketer, model)); }
public Task <LeadResult> UpdateLead(IOrganizationMarketer ma, Guid leadId, LeadInput model) { _logger.LogInformation(GetLogMessage("MA: {0}; updating lead: {1}"), ma.OrganizationId, leadId); return(UpdateLead(leadId, model)); }
public Task <LeadResult> UpdateLead(IOrganizationAccountManager am, Guid leadId, LeadInput model) { _logger.LogInformation(GetLogMessage("AM: {0}; updating lead: {1}"), am.OrganizationId, leadId); return(UpdateLead(leadId, model)); }
public Task <LeadResult> UpdateLead(IProviderAgencyOwner agencyOwner, Guid leadId, LeadInput model) { _logger.LogInformation(GetLogMessage("PAO: {0}; updating lead: {1}"), agencyOwner.OrganizationId, leadId); return(UpdateLead(leadId, model)); }
private async Task <LeadResult> CreateLead(IOrganizationMarketer ma, Guid providerOrganizationId, LeadInput input) { _logger.LogInformation(GetLogMessage("MA: {0}"), ma.OrganizationId); var retVal = new LeadResult(); if (await CountLeadsPerProviderByEmail(providerOrganizationId, input.EmailAddress) > 0) { retVal.ErrorMessage = "Email has already been used as a lead for this organization"; retVal.Succeeded = false; return(retVal); } _logger.LogDebug(GetLogMessage("Email hasn't been used by this organization")); var isExternal = providerOrganizationId != ma.OrganizationId; _logger.LogDebug(GetLogMessage("External Lead: {0}"), isExternal); var marketer = await _marketerService.Repository.Queryable() .Include(x => x.Marketer) .ThenInclude(x => x.Person) .Where(x => x.MarketerId == ma.MarketerId && x.OrganizationId == ma.OrganizationId) .FirstAsync(); var marketerBonus = marketer.MarketerBonus; var marketerAgencyBonus = 0m; var marketerAgencyStream = 0m; var marketerStream = marketer.MarketerStream; _logger.LogTrace( GetLogMessage( $@"Marketer Found: {marketer.MarketerId}")); if (isExternal) { var marketingAgreement = await _marketingAgreements.Queryable() .Where(x => x.ProviderOrganizationId == providerOrganizationId && x.MarketingOrganizationId == ma.OrganizationId) .FirstOrDefaultAsync(); if (marketingAgreement == null) { retVal.ErrorMessage = "Marketing agreement doesn't exist between marketing and provider organization"; return(retVal); } if (marketingAgreement.Status != AgreementStatus.Approved) { retVal.ErrorMessage = "Marketing agreement is not approved"; return(retVal); } _logger.LogDebug( GetLogMessage( $@"Marketing Agreement found to be valid")); marketerBonus = marketingAgreement.MarketerBonus; marketerAgencyBonus = marketingAgreement.MarketingAgencyBonus; marketerAgencyStream = marketingAgreement.MarketingAgencyStream; marketerStream = marketingAgreement.MarketerStream; } var lead = new Lead { Iso2 = input.Iso2, ProvinceState = input.ProvinceState, MarketerId = marketer.MarketerId, MarketerOrganizationId = marketer.OrganizationId, MarketerStream = marketerStream, MarketerBonus = marketerBonus, MarketingAgencyBonus = marketerAgencyBonus, MarketingAgencyStream = marketerAgencyStream, ProviderOrganizationId = providerOrganizationId, UpdatedById = marketer.MarketerId, CreatedById = marketer.MarketerId, // cant be _userInfo.UserId ObjectState = ObjectState.Added, Status = LeadStatus.New }; lead.StatusTransitions.Add(new LeadStatusTransition() { Status = LeadStatus.New, ObjectState = ObjectState.Added }); lead.InjectFrom(input); var records = Repository.Insert(lead, true); _logger.LogDebug(GetLogMessage("{0} records updated in db"), records); if (records > 0) { retVal.LeadId = lead.Id; retVal.Succeeded = true; await Task.Run(() => RaiseEvent(new LeadCreatedEvent { LeadId = lead.Id })); } return(retVal); }
public async Task <LeadResult> CreateExternalLead(IOrganizationMarketer ma, Guid providerOrganizationId, LeadInput model) { _logger.LogInformation(GetLogMessage("MA: {0}"), ma.OrganizationId); return(await CreateLead(ma, providerOrganizationId, model)); }
public async Task <IActionResult> CreateLead([FromRoute] Guid organizationId, [FromQuery] string referralCode, [FromBody] LeadInput input) { var marketer = await _marketerService.GetMarketerOrDefault <OrganizationMarketerOutput>(organizationId, null, referralCode); var lead = await _leadService.CreateInternalLead(marketer, input); return(Ok(lead)); }
public Status createEnquiry(LeadInput input, IOrganizationService orgService) { Status _status = new Status(); try { Entity eLead = new Entity("new_cientenquiry1"); if (!string.IsNullOrEmpty(input.CustomerCity)) { Guid cityId = getCityId(input.CustomerCity, orgService); if (cityId != Guid.Empty) { eLead["new_ct"] = new EntityReference("new_city", cityId); } else { _status.code = "202"; _status.message = "City Not Found in CRM"; return(_status); } } if (!string.IsNullOrEmpty(input.CenterCode)) { Guid centerId = getCenterId(input.CenterCode, orgService); if (centerId != Guid.Empty) { eLead["new_center"] = new EntityReference("new_center", centerId); } else { _status.code = "202"; _status.message = "Center Not Found in CRM"; return(_status); } } if (!string.IsNullOrEmpty(input.CustomerEmail)) { eLead["new_emailid1"] = input.CustomerEmail; } if (!string.IsNullOrEmpty(input.CustomerName)) { eLead["new_name"] = input.CustomerName; } if (!string.IsNullOrEmpty(input.CustomerGender)) { string gender = input.CustomerGender.ToLower(); if (gender.Equals("male")) { eLead["new_gen"] = new OptionSetValue(100000001); } else if (gender.Equals("female")) { eLead["new_gen"] = new OptionSetValue(100000000); } else if (gender.Equals("transgender")) { eLead["new_gen"] = new OptionSetValue(3); } else { _status.code = "202"; _status.message = "Gender should be either Male,Female or Transgender"; return(_status); } } if (!string.IsNullOrEmpty(input.ServiceCategory)) { eLead["pcl_servicecategoy"] = input.ServiceCategory; } if (!string.IsNullOrEmpty(input.Service)) { eLead["pcl_service"] = input.Service; } if (!string.IsNullOrEmpty(input.SubService)) { eLead["pcl_subservice"] = input.SubService; } if (!string.IsNullOrEmpty(input.CampaignCode)) { eLead["pcl_campaignname"] = input.CampaignCode; } if (!string.IsNullOrEmpty(input.Source)) { eLead["pcl_source"] = input.Source; } eLead["new_phone"] = input.PhoneNo; eLead["new_re"] = new OptionSetValue(100000018); if (string.IsNullOrEmpty(input.Source) && string.IsNullOrEmpty(input.CampaignCode) && string.IsNullOrEmpty(input.Service) && string.IsNullOrEmpty(input.SubService) && string.IsNullOrEmpty(input.ServiceCategory) && string.IsNullOrEmpty(input.CustomerGender) && string.IsNullOrEmpty(input.CustomerName) && string.IsNullOrEmpty(input.CustomerEmail) && string.IsNullOrEmpty(input.CenterCode) && string.IsNullOrEmpty(input.CustomerCity)) { _status.code = "202"; _status.message = "No data present except Mobile"; } else { orgService.Create(eLead); _status.code = "200"; _status.message = "SUCCESS"; } } catch (Exception ex) { _status.code = "201"; _status.message = ex.Message; } return(_status); }