Exemple #1
0
        public async Task <IActionResult> RejectLead([FromRoute] Guid organizationId, [FromRoute] Guid leadId,
                                                     [FromBody] LeadRejectInput input)
        {
            var lead = await _leadService.RejectLead(_accountManager, leadId, input);

            return(Ok(lead));
        }
Exemple #2
0
        public async Task <IActionResult> RejectLead([FromRoute] Guid organizationId, [FromRoute] Guid leadId,
                                                     [FromBody] LeadRejectInput input)
        {
            var ao       = _agencyOwner.Value;
            var response = await _leadService.RejectLead(ao, leadId, input);

            return(Ok(response));
        }
        private async Task <LeadResult> RejectLead(Guid leadId, LeadRejectInput input)
        {
            _logger.LogInformation(GetLogMessage("Rejecting lead: {0}; for Reason: {1}"), leadId, input.RejectionReason);
            var retVal = new LeadResult()
            {
                LeadId = leadId
            };

            var entity = await Repository
                         .FirstOrDefaultAsync(n => n.Id == leadId);

            if (entity.Status == LeadStatus.Promoted)
            {
                retVal.ErrorMessage = "Lead has already been promoted";
                return(retVal);
            }

            if (entity.Status != LeadStatus.Rejected)
            {
                _logger.LogDebug(GetLogMessage("Lead is able to be rejected"));

                entity.Status          = LeadStatus.Rejected;
                entity.RejectionReason = input.RejectionReason;
                entity.UpdatedById     = _userInfo.Value.UserId;
                entity.Updated         = DateTimeOffset.UtcNow;
                entity.ObjectState     = ObjectState.Modified;

                entity.StatusTransitions.Add(new LeadStatusTransition()
                {
                    Status      = LeadStatus.Rejected,
                    ObjectState = ObjectState.Added
                });

                var leadResult = Repository.InsertOrUpdateGraph(entity, true);

                _logger.LogDebug(GetLogMessage("{0} records updated"), leadResult);

                if (leadResult > 0)
                {
                    retVal.Succeeded = true;
                    await Task.Run(() =>
                    {
                        RaiseEvent(new LeadRejectedEvent
                        {
                            LeadId = leadId
                        });
                    });
                }
            }
            else
            {
                _logger.LogDebug(GetLogMessage("Lead is already rejected"));
            }

            return(retVal);
        }
        public Task <LeadResult> RejectLead(IProviderAgencyOwner agencyOwner, Guid leadId, LeadRejectInput input)
        {
            _logger.LogInformation(GetLogMessage("AO: {0}; LeadId: {1}; Input: {@input}"), agencyOwner.OrganizationId, leadId, input);

            return(RejectLead(leadId, input));
        }
        public Task <LeadResult> RejectLead(IOrganizationAccountManager am, Guid leadId, LeadRejectInput input)
        {
            _logger.LogInformation(GetLogMessage("AM: {0}; LeadId: {1}; Input: {@input}"), am.OrganizationId, leadId, input);

            return(RejectLead(leadId, input));
        }