initial commit
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
using Indotalent.Infrastructure.Database;
|
||||
using MediatR;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Indotalent.Data.Enums;
|
||||
|
||||
namespace Indotalent.Features.Pipeline.Lead.Cqrs;
|
||||
|
||||
public class UpdateLeadRequest
|
||||
{
|
||||
public string? Id { get; set; }
|
||||
public string? Title { get; set; }
|
||||
public string? Description { get; set; }
|
||||
public string? CompanyName { get; set; }
|
||||
public string? CompanyDescription { get; set; }
|
||||
public string? CompanyAddressStreet { get; set; }
|
||||
public string? CompanyAddressCity { get; set; }
|
||||
public string? CompanyAddressState { get; set; }
|
||||
public string? CompanyAddressZipCode { get; set; }
|
||||
public string? CompanyAddressCountry { get; set; }
|
||||
public string? CompanyPhoneNumber { get; set; }
|
||||
public string? CompanyFaxNumber { get; set; }
|
||||
public string? CompanyEmail { get; set; }
|
||||
public string? CompanyWebsite { get; set; }
|
||||
public string? CompanyWhatsApp { get; set; }
|
||||
public string? CompanyLinkedIn { get; set; }
|
||||
public string? CompanyFacebook { get; set; }
|
||||
public string? CompanyInstagram { get; set; }
|
||||
public string? CompanyTwitter { get; set; }
|
||||
public DateTime? DateProspecting { get; set; }
|
||||
public DateTime? DateClosingEstimation { get; set; }
|
||||
public DateTime? DateClosingActual { get; set; }
|
||||
public decimal? AmountTargeted { get; set; }
|
||||
public decimal? AmountClosed { get; set; }
|
||||
public decimal? BudgetScore { get; set; }
|
||||
public decimal? AuthorityScore { get; set; }
|
||||
public decimal? NeedScore { get; set; }
|
||||
public decimal? TimelineScore { get; set; }
|
||||
public PipelineStage PipelineStage { get; set; }
|
||||
public ClosingStatus ClosingStatus { get; set; }
|
||||
public string? ClosingNote { get; set; }
|
||||
public string? CampaignId { get; set; }
|
||||
public string? SalesTeamId { get; set; }
|
||||
public DateTimeOffset? CreatedAt { get; set; }
|
||||
public string? CreatedBy { get; set; }
|
||||
public DateTimeOffset? UpdatedAt { get; set; }
|
||||
public string? UpdatedBy { get; set; }
|
||||
}
|
||||
|
||||
public class UpdateLeadResponse
|
||||
{
|
||||
public string? Id { get; set; }
|
||||
public bool Success { get; set; }
|
||||
}
|
||||
|
||||
public record UpdateLeadCommand(UpdateLeadRequest Data) : IRequest<UpdateLeadResponse>;
|
||||
|
||||
public class UpdateLeadHandler : IRequestHandler<UpdateLeadCommand, UpdateLeadResponse>
|
||||
{
|
||||
private readonly AppDbContext _context;
|
||||
|
||||
public UpdateLeadHandler(AppDbContext context) => _context = context;
|
||||
|
||||
public async Task<UpdateLeadResponse> Handle(UpdateLeadCommand request, CancellationToken cancellationToken)
|
||||
{
|
||||
var entity = await _context.Lead
|
||||
.FirstOrDefaultAsync(x => x.Id == request.Data.Id, cancellationToken);
|
||||
|
||||
if (entity == null) return new UpdateLeadResponse { Id = request.Data.Id, Success = false };
|
||||
|
||||
entity.Title = request.Data.Title;
|
||||
entity.Description = request.Data.Description;
|
||||
entity.CompanyName = request.Data.CompanyName;
|
||||
entity.CompanyDescription = request.Data.CompanyDescription;
|
||||
entity.CompanyAddressStreet = request.Data.CompanyAddressStreet;
|
||||
entity.CompanyAddressCity = request.Data.CompanyAddressCity;
|
||||
entity.CompanyAddressState = request.Data.CompanyAddressState;
|
||||
entity.CompanyAddressZipCode = request.Data.CompanyAddressZipCode;
|
||||
entity.CompanyAddressCountry = request.Data.CompanyAddressCountry;
|
||||
entity.CompanyPhoneNumber = request.Data.CompanyPhoneNumber;
|
||||
entity.CompanyFaxNumber = request.Data.CompanyFaxNumber;
|
||||
entity.CompanyEmail = request.Data.CompanyEmail;
|
||||
entity.CompanyWebsite = request.Data.CompanyWebsite;
|
||||
entity.CompanyWhatsApp = request.Data.CompanyWhatsApp;
|
||||
entity.CompanyLinkedIn = request.Data.CompanyLinkedIn;
|
||||
entity.CompanyFacebook = request.Data.CompanyFacebook;
|
||||
entity.CompanyInstagram = request.Data.CompanyInstagram;
|
||||
entity.CompanyTwitter = request.Data.CompanyTwitter;
|
||||
entity.DateProspecting = request.Data.DateProspecting;
|
||||
entity.DateClosingEstimation = request.Data.DateClosingEstimation;
|
||||
entity.DateClosingActual = request.Data.DateClosingActual;
|
||||
entity.AmountTargeted = request.Data.AmountTargeted;
|
||||
entity.AmountClosed = request.Data.AmountClosed;
|
||||
entity.BudgetScore = request.Data.BudgetScore;
|
||||
entity.AuthorityScore = request.Data.AuthorityScore;
|
||||
entity.NeedScore = request.Data.NeedScore;
|
||||
entity.TimelineScore = request.Data.TimelineScore;
|
||||
entity.PipelineStage = request.Data.PipelineStage;
|
||||
entity.ClosingStatus = request.Data.ClosingStatus;
|
||||
entity.ClosingNote = request.Data.ClosingNote;
|
||||
entity.CampaignId = request.Data.CampaignId;
|
||||
entity.SalesTeamId = request.Data.SalesTeamId;
|
||||
|
||||
await _context.SaveChangesAsync(cancellationToken);
|
||||
|
||||
return new UpdateLeadResponse { Id = entity.Id, Success = true };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user