From 4731337aeabfa1754e8313f01c6cd9b582cc62dd Mon Sep 17 00:00:00 2001 From: Iliyan Iliev Date: Tue, 5 May 2020 13:51:28 +0300 Subject: [PATCH] Remove obsolete logic --- .../IReferralClient.cs | 3 - .../IReferralLeadApi.cs | 86 ----- .../Requests/ReferralLeadConfirmRequest.cs | 15 - .../Requests/ReferralLeadCreateRequest.cs | 57 --- .../ApprovedReferralLeadListResponse.cs | 15 - .../Responses/ApprovedReferralLeadModel.cs | 30 -- .../ReferralLeadApprovedByAgentModel.cs | 20 -- .../Responses/ReferralLeadConfirmResponse.cs | 10 - .../Responses/ReferralLeadCreateResponse.cs | 9 - .../Responses/ReferralLeadListResponse.cs | 15 - .../Models/Responses/ReferralLeadModel.cs | 90 ----- .../Models/Responses/ReferralLeadState.cs | 31 -- .../ReferralClient.cs | 4 - .../Models/ReferralLead.cs | 38 -- .../Models/ReferralLeadEncrypted.cs | 76 ---- .../ReferralLeadEncryptedWithDetails.cs | 18 - .../Models/ReferralLeadState.cs | 10 - .../Models/ReferralLeadWithDetails.cs | 18 - .../IPropertyPurchaseRepository - Copy.cs | 13 - .../IPropertyPurchaseRepository.cs | 15 - .../Repositories/IReferralLeadRepository.cs | 38 -- .../Services/IOfferToPurchaseService.cs | 13 - .../Services/IPropertyPurchaseService.cs | 13 - .../AutoMapperProfile.cs | 23 +- .../Managers/CommissionManager.cs | 35 -- .../Services/CommonReferralService.cs | 1 - .../Services/OfferToPurchaseService.cs | 59 ---- .../Services/PropertyPurchaseService.cs | 60 ---- .../AutofacModule.cs | 14 +- .../AutomapperProfile.cs | 36 +- .../Entities/OfferToPurchaseEntity.cs | 15 - .../Entities/PropertyPurchaseEntity.cs | 18 - .../Entities/ReferralLeadEntity.cs | 50 --- .../Entities/ReferralLeadState.cs | 10 - ...00505104830_RemoveReferralLead.Designer.cs | 166 +++++++++ .../20200505104830_RemoveReferralLead.cs | 105 ++++++ .../ReferralContextModelSnapshot.cs | 112 +----- .../ReferralContext.cs | 15 - .../OfferToPurchasePurchaseRepository.cs | 44 --- .../PropertyPurchaseRepository.cs | 66 ---- .../Repositories/ReferralLeadRepository.cs | 198 ----------- .../Controllers/ReferralHotelsController.cs | 4 +- .../Controllers/ReferralLeadsController.cs | 331 ------------------ .../ReferralLeadConfirmRequestValidator.cs | 18 - .../ReferralLeadCreateRequestValidator.cs | 56 --- .../Modules/ServiceModule.cs | 12 - .../Profiles/ServiceProfile.cs | 83 +---- .../CommonReferralServiceTestsFixture.cs | 9 - .../Services/PropertyPurchaseServiceTests.cs | 72 ---- .../PropertyPurchaseServiceTestsFixture.cs | 133 ------- .../PropertyPurchaseRepositoryFixture.cs | 35 -- .../Fixtures/ReferralLeadRepositoryFixture.cs | 78 ----- .../PropertyPurchaseRepositoryTests.cs | 36 -- .../ReferralLeadRepositoryTests.cs | 129 ------- 54 files changed, 280 insertions(+), 2380 deletions(-) delete mode 100644 client/MAVN.Service.Referral.Client/IReferralLeadApi.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadConfirmRequest.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadCreateRequest.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadListResponse.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadModel.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadApprovedByAgentModel.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadConfirmResponse.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadCreateResponse.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadListResponse.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadModel.cs delete mode 100644 client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadState.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Models/ReferralLead.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncrypted.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncryptedWithDetails.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Models/ReferralLeadState.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Models/ReferralLeadWithDetails.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository - Copy.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Repositories/IReferralLeadRepository.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Services/IOfferToPurchaseService.cs delete mode 100644 src/MAVN.Service.Referral.Domain/Services/IPropertyPurchaseService.cs delete mode 100644 src/MAVN.Service.Referral.DomainServices/Managers/CommissionManager.cs delete mode 100644 src/MAVN.Service.Referral.DomainServices/Services/OfferToPurchaseService.cs delete mode 100644 src/MAVN.Service.Referral.DomainServices/Services/PropertyPurchaseService.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Entities/OfferToPurchaseEntity.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Entities/PropertyPurchaseEntity.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadEntity.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadState.cs create mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.Designer.cs create mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Repositories/OfferToPurchasePurchaseRepository.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Repositories/PropertyPurchaseRepository.cs delete mode 100644 src/MAVN.Service.Referral.MsSqlRepositories/Repositories/ReferralLeadRepository.cs delete mode 100644 src/MAVN.Service.Referral/Controllers/ReferralLeadsController.cs delete mode 100644 src/MAVN.Service.Referral/Models/Validation/ReferralLeadConfirmRequestValidator.cs delete mode 100644 src/MAVN.Service.Referral/Models/Validation/ReferralLeadCreateRequestValidator.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTests.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTestsFixture.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/PropertyPurchaseRepositoryFixture.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/ReferralLeadRepositoryFixture.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/MsSqlRepositories/PropertyPurchaseRepositoryTests.cs delete mode 100644 tests/MAVN.Service.Referral.Tests/MsSqlRepositories/ReferralLeadRepositoryTests.cs diff --git a/client/MAVN.Service.Referral.Client/IReferralClient.cs b/client/MAVN.Service.Referral.Client/IReferralClient.cs index 5487150..65d6eab 100644 --- a/client/MAVN.Service.Referral.Client/IReferralClient.cs +++ b/client/MAVN.Service.Referral.Client/IReferralClient.cs @@ -11,9 +11,6 @@ public interface IReferralClient /// Application ReferralApi interface IReferralApi ReferralApi { get; } - /// Application ReferralLeadApi interface - //IReferralLeadApi ReferralLeadApi { get; } - /// Application ReferralHotelsApi interface IReferralHotelsApi ReferralHotelsApi { get; } diff --git a/client/MAVN.Service.Referral.Client/IReferralLeadApi.cs b/client/MAVN.Service.Referral.Client/IReferralLeadApi.cs deleted file mode 100644 index 8ace829..0000000 --- a/client/MAVN.Service.Referral.Client/IReferralLeadApi.cs +++ /dev/null @@ -1,86 +0,0 @@ -//using System; -//using System.Collections.Generic; -//using System.Threading.Tasks; -//using JetBrains.Annotations; -//using MAVN.Service.Referral.Client.Models.Requests; -//using MAVN.Service.Referral.Client.Models.Responses; -//using MAVN.Service.Referral.Client.Models.Responses.OfferToPurchase; -//using MAVN.Service.Referral.Client.Models.Responses.PropertyPurchase; -//using Refit; - -//namespace MAVN.Service.Referral.Client -//{ -// /// -// /// Referral Leads client API interface. -// /// -// [PublicAPI] -// public interface IReferralLeadApi -// { -// /// -// /// Create referral lead. -// /// -// /// The model containing the data for which referral lead would be created -// /// A referral model containing the result of the generation. -// [Post("/api/referral-leads")] -// Task PostAsync(ReferralLeadCreateRequest referralLeadCreate); - -// /// -// /// Confirm the lead. -// /// -// /// The model containing the data for which referral lead would be confirmed -// /// Whenever the response is successful or not. -// [Put("/api/referral-leads/confirm")] -// Task ConfirmAsync(ReferralLeadConfirmRequest referralLeadConfirmRequest); - -// /// -// /// Created real estate purchase. -// /// -// /// The model creating the purchase info. -// /// A model containing the result form the operation. -// [Put("/api/referral-leads/purchase")] -// Task AddRealEstatePurchase(RealEstatePurchaseRequest request); - -// /// -// /// Get referral leads. -// /// -// /// A referral lead list model containing all referral leads. -// [Get("/api/referral-leads")] -// Task GetAsync(string agentId); - -// /// -// /// Get approved referral leads. -// /// -// /// A referral lead list model containing all approved referral leads. -// [Get("/api/referral-leads/approved")] -// Task GetApprovedAsync(); - -// /// -// /// Get property purchases. -// /// -// /// A property purchase list model containing all purchased properties. -// [Get("/api/referral-leads/property-purchases")] -// Task GetPropertyPurchasesAsync(); - -// /// -// /// Get leads' statistic -// /// -// /// Statistic Lead Response Model -// [Get("/api/referral-leads/statistic")] -// Task GetLeadStatisticAsync(); - -// /// -// /// Get offers to purchase. -// /// -// /// A offer to purchase list model containing all offers to purchases. -// [Get("/api/referral-leads/offer-to-purchases")] -// Task GetOfferToPurchasesAsync(); - -// /// -// /// Get Approved referrals count by Agent Ids. -// /// -// /// A list of Agent Ids. -// /// Referrals count. -// [Get("/api/referral-leads/approved-referrals-count-by-agents")] -// Task> GetApprovedReferralsCountByAgentsAsync([Query(CollectionFormat.Multi)]List agentIds); -// } -//} diff --git a/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadConfirmRequest.cs b/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadConfirmRequest.cs deleted file mode 100644 index bcae3ed..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadConfirmRequest.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace MAVN.Service.Referral.Client.Models.Requests -{ - /// - /// Represents a model for creating a referral lead - /// - public class ReferralLeadConfirmRequest - { - /// - /// The confirmation token of the referral. - /// - public string ConfirmationToken { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadCreateRequest.cs b/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadCreateRequest.cs deleted file mode 100644 index 8d6f41c..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Requests/ReferralLeadCreateRequest.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; - -namespace MAVN.Service.Referral.Client.Models.Requests -{ - /// - /// Represents a model for creating a referral lead - /// - public class ReferralLeadCreateRequest - { - /// - /// The first name of the lead. - /// Needs to be not null neither empty with length between 3 and 100. - /// - public string FirstName { get; set; } - - /// - /// The last name of the lead. - /// Needs to be not null neither empty with length between 3 and 100. - /// - public string LastName { get; set; } - - /// - /// The phone number country code id of the lead. - /// Needs to be not null neither empty. - /// - public int PhoneCountryCodeId { get; set; } - - /// - /// The phone number of the lead. - /// Needs to be not null neither empty with length between 2 and 50. - /// - public string PhoneNumber { get; set; } - - /// - /// The email of the lead. - /// Needs to be not null neither empty, should be a valid email. - /// - public string Email { get; set; } - - /// - /// The lead note. - /// Can be either null or between 2 or 1000 in length. - /// - public string Note { get; set; } - - /// - /// The id of the customer doing the referral. - /// Needs to be not null neither empty. - /// - public string CustomerId { get; set; } - - /// - /// The campaign id if any. - /// - public Guid? CampaignId { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadListResponse.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadListResponse.cs deleted file mode 100644 index 6602775..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadListResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Represents a response from approved referral lead list - /// - public class ApprovedReferralLeadListResponse : ReferralErrorResponseModel - { - /// - /// List of referral lead model. - /// - public IReadOnlyList ReferralLeads { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadModel.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadModel.cs deleted file mode 100644 index 6afc7b8..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ApprovedReferralLeadModel.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Model representing approved lead model - /// - public class ApprovedReferralLeadModel - { - /// - /// The id of the approved lead - /// - public string Id { get; set; } - - /// - /// The referral id of the approved lead - /// - public string ReferralLeadId { get; set; } - - /// - /// The salesforce id of the approved lead - /// - public string SalesforceId { get; set; } - - /// - /// The timestamp of the approved lead - /// - public DateTime Timestamp { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadApprovedByAgentModel.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadApprovedByAgentModel.cs deleted file mode 100644 index fba8da9..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadApprovedByAgentModel.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Used to represent count of Approved referrals by Agent's Id. - /// - public class ReferralLeadApprovedByAgentModel - { - /// - /// Id of the Agent. - /// - public Guid AgentId { set; get; } - - /// - /// Number of Approved referrals. - /// - public int Count { set; get; } - } -} \ No newline at end of file diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadConfirmResponse.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadConfirmResponse.cs deleted file mode 100644 index 3873460..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadConfirmResponse.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Represents response model of manual referral lead approval. - /// - public class ReferralLeadConfirmResponse: ReferralErrorResponseModel - { - - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadCreateResponse.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadCreateResponse.cs deleted file mode 100644 index f5600df..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadCreateResponse.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Represents a response from creating referral lead - /// - public class ReferralLeadCreateResponse : ReferralErrorResponseModel - { - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadListResponse.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadListResponse.cs deleted file mode 100644 index fca6290..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadListResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Represents a response from referral lead list - /// - public class ReferralLeadListResponse : ReferralErrorResponseModel - { - /// - /// List of referral lead model. - /// - public IReadOnlyList ReferralLeads { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadModel.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadModel.cs deleted file mode 100644 index e7ec9d0..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadModel.cs +++ /dev/null @@ -1,90 +0,0 @@ -using System; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Model representing referral lead model - /// - public class ReferralLeadModel - { - /// - /// The id of the referral lead - /// - public string Id { get; set; } - - /// - /// The first name of the referral lead - /// - public string FirstName { get; set; } - - /// - /// The last name of the referral lead - /// - public string LastName { get; set; } - - /// - /// The country code id of the referral lead - /// - public int PhoneCountryCodeId { get; set; } - - /// - /// The phone number of the referral lead - /// - public string PhoneNumber { get; set; } - - /// - /// The email of the referral lead - /// - public string Email { get; set; } - - /// - /// The note for the referral lead - /// - public string Note { get; set; } - - /// - /// The agent doing the referral - /// - public string AgentId { get; set; } - - /// - /// The salesforce id of the agent doing the referral - /// - public string AgentSalesforceId { get; set; } - - /// - /// The state of the referral lead - /// - public ReferralLeadState State { get; set; } - - /// - /// The salesforce id of the referral lead - /// - public string SalesforceId { get; set; } - - /// - /// Token used to confirm the referral - /// - public string ConfirmationToken { get; set; } - - /// - /// The creation date and time of the referral lead - /// - public DateTime CreationDateTime { get; set; } - - /// - /// The number of SPA (sales purchase agreement) - /// - public int PurchaseCount { get; set; } - - /// - /// The number of OTP (offers to purchase). - /// - public int OffersCount { get; set; } - - /// - /// The Campaign Id if any. - /// - public Guid? CampaignId { get; set; } - } -} diff --git a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadState.cs b/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadState.cs deleted file mode 100644 index 7546f1e..0000000 --- a/client/MAVN.Service.Referral.Client/Models/Responses/ReferralLeadState.cs +++ /dev/null @@ -1,31 +0,0 @@ -using JetBrains.Annotations; - -namespace MAVN.Service.Referral.Client.Models.Responses -{ - /// - /// Specifies status of referral lead. - /// - [PublicAPI] - public enum ReferralLeadState - { - /// - /// Indicates that the referral lead waiting for approval. - /// - Pending, - - /// - /// Indicates that the referral lead confirmed. - /// - Confirmed, - - /// - /// Indicates that the referral lead approved. - /// - Approved, - - /// - /// Indicates that the referral lead rejected. - /// - Rejected - } -} diff --git a/client/MAVN.Service.Referral.Client/ReferralClient.cs b/client/MAVN.Service.Referral.Client/ReferralClient.cs index 2e82443..dd20cd8 100644 --- a/client/MAVN.Service.Referral.Client/ReferralClient.cs +++ b/client/MAVN.Service.Referral.Client/ReferralClient.cs @@ -12,9 +12,6 @@ public class ReferralClient : IReferralClient /// Interface to Referral ReferralApi. public IReferralApi ReferralApi { get; private set; } - /// Interface to Referral ReferralLeadApi. - //public IReferralLeadApi ReferralLeadApi { get; } - /// Interface to Referral ReferralHotelsApi. public IReferralHotelsApi ReferralHotelsApi { get; } @@ -28,7 +25,6 @@ public class ReferralClient : IReferralClient public ReferralClient(IHttpClientGenerator httpClientGenerator) { ReferralApi = httpClientGenerator.Generate(); - //ReferralLeadApi = httpClientGenerator.Generate(); ReferralHotelsApi = httpClientGenerator.Generate(); ReferralFriendsApi = httpClientGenerator.Generate(); CommonReferralApi = httpClientGenerator.Generate(); diff --git a/src/MAVN.Service.Referral.Domain/Models/ReferralLead.cs b/src/MAVN.Service.Referral.Domain/Models/ReferralLead.cs deleted file mode 100644 index ea86c53..0000000 --- a/src/MAVN.Service.Referral.Domain/Models/ReferralLead.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using MAVN.Service.Referral.Domain.Entities; - -namespace MAVN.Service.Referral.Domain.Models -{ - public class ReferralLead - { - public Guid Id { get; set; } - - public string FirstName { get; set; } - - public string LastName { get; set; } - - public int PhoneCountryCodeId { get; set; } - - public string PhoneNumber { get; set; } - - public string Email { get; set; } - - public string Note { get; set; } - - public Guid AgentId { get; set; } - - public string AgentSalesforceId { get; set; } - - public string SalesforceId { get; set; } - - public string ResponseStatus { get; set; } - - public string ConfirmationToken { get; set; } - - public Guid? CampaignId { get; set; } - - public ReferralLeadState State { get; set; } - - public DateTime CreationDateTime { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncrypted.cs b/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncrypted.cs deleted file mode 100644 index 45974a8..0000000 --- a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncrypted.cs +++ /dev/null @@ -1,76 +0,0 @@ -using System; -using MAVN.Service.Referral.Domain.Entities; - -namespace MAVN.Service.Referral.Domain.Models -{ - /// - /// Represents an encrypted referral lead that used to store. - /// - public class ReferralLeadEncrypted - { - /// - /// The unique identifier. - /// - public Guid Id { get; set; } - - /// - /// The phone country code identifier. - /// - public int PhoneCountryCodeId { get; set; } - - /// - /// The SHA256 hash of phone number. - /// - public string PhoneNumberHash { get; set; } - - /// - /// The SHA256 hash of email address. - /// - public string EmailHash { get; set; } - - /// - /// The agent identifier. - /// - public Guid AgentId { get; set; } - - /// - /// The salesforce agent identifier. - /// - public string AgentSalesforceId { get; set; } - - /// - /// The referral lead salesforce identifier. - /// - public string SalesforceId { get; set; } - - /// - /// The salesforce registration status. - /// - public string ResponseStatus { get; set; } - - /// - /// The token used to confirm the referral. - /// - public string ConfirmationToken { get; set; } - - /// - /// The state of the referral lead. - /// - public ReferralLeadState State { get; set; } - - /// - /// The date and time of creation. - /// - public DateTime CreationDateTime { get; set; } - - /// - /// The campaign id if any. - /// - public Guid? CampaignId { get; set; } - - /// - /// Is stake enabled for Campaign. - /// - public bool StakeEnabled { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncryptedWithDetails.cs b/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncryptedWithDetails.cs deleted file mode 100644 index e98b0eb..0000000 --- a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadEncryptedWithDetails.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace MAVN.Service.Referral.Domain.Models -{ - /// - /// Represents an encrypted referral lead with details. - /// - public class ReferralLeadEncryptedWithDetails : ReferralLeadEncrypted - { - /// - /// The number of SPA (sales purchase agreement) - /// - public int PurchaseCount { get; set; } - - /// - /// The number of OTP (offers to purchase). - /// - public int OffersCount { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadState.cs b/src/MAVN.Service.Referral.Domain/Models/ReferralLeadState.cs deleted file mode 100644 index 31e0c2a..0000000 --- a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadState.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MAVN.Service.Referral.Domain.Entities -{ - public enum ReferralLeadState - { - Pending, - Confirmed, - Approved, - Rejected - } -} diff --git a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadWithDetails.cs b/src/MAVN.Service.Referral.Domain/Models/ReferralLeadWithDetails.cs deleted file mode 100644 index a6f6b07..0000000 --- a/src/MAVN.Service.Referral.Domain/Models/ReferralLeadWithDetails.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace MAVN.Service.Referral.Domain.Models -{ - /// - /// Represents referral lead with details. - /// - public class ReferralLeadWithDetails : ReferralLead - { - /// - /// The number of SPA (sales purchase agreement) - /// - public int PurchaseCount { get; set; } - - /// - /// The number of OTP (offers to purchase). - /// - public int OffersCount { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository - Copy.cs b/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository - Copy.cs deleted file mode 100644 index e6957d0..0000000 --- a/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository - Copy.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.Domain.Repositories -{ - public interface IOfferToPurchasePurchaseRepository - { - Task InsertAsync(OfferToPurchase propertyPurchase); - Task> GetAsync(); - } -} diff --git a/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository.cs b/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository.cs deleted file mode 100644 index 0669c37..0000000 --- a/src/MAVN.Service.Referral.Domain/Repositories/IPropertyPurchaseRepository.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.Domain.Repositories -{ - public interface IPropertyPurchaseRepository - { - Task InsertAsync(PropertyPurchase propertyPurchase); - Task> GetAsync(); - Task GetUniqueLeadCount(); - Task PropertyPurchaseExistsAsync(Guid referralLeadId); - } -} diff --git a/src/MAVN.Service.Referral.Domain/Repositories/IReferralLeadRepository.cs b/src/MAVN.Service.Referral.Domain/Repositories/IReferralLeadRepository.cs deleted file mode 100644 index 2eebe67..0000000 --- a/src/MAVN.Service.Referral.Domain/Repositories/IReferralLeadRepository.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Entities; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.Domain.Repositories -{ - public interface IReferralLeadRepository - { - Task CreateAsync(ReferralLeadEncrypted referralLeadEncrypted); - - Task UpdateAsync(ReferralLeadEncrypted referralLeadEncrypted); - - Task> GetByEmailHashAsync(string emailHash); - - Task> GetByPhoneNumberHashAsync(int countryCodeId, string phoneNumberHash); - - Task GetByConfirmationTokenAsync(string confirmationToken); - - Task> GetForReferrerAsync( - Guid referrerId, - Guid? campaignId, - IEnumerable states); - - Task> GetApprovedAsync(); - - Task GetAsync(Guid referLeadId); - - Task DoesExistAsync(Guid referLeadId); - - Task GetCountAsync(ReferralLeadState? status = null); - - Task> GetApprovedReferralsCountByAgentsAsync(List agentIds); - - Task> GetByReferralIdsAsync(List referralIds); - } -} diff --git a/src/MAVN.Service.Referral.Domain/Services/IOfferToPurchaseService.cs b/src/MAVN.Service.Referral.Domain/Services/IOfferToPurchaseService.cs deleted file mode 100644 index 8f40ea8..0000000 --- a/src/MAVN.Service.Referral.Domain/Services/IOfferToPurchaseService.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.Domain.Services -{ - public interface IOfferToPurchaseService - { - Task<(bool isSuccessful, string errorMessage)> ProcessOfferToPurchaseAsync(OfferToPurchase offerToPurchase); - Task> GetOffersToPurchasesAsync(); - } -} diff --git a/src/MAVN.Service.Referral.Domain/Services/IPropertyPurchaseService.cs b/src/MAVN.Service.Referral.Domain/Services/IPropertyPurchaseService.cs deleted file mode 100644 index 9ba515c..0000000 --- a/src/MAVN.Service.Referral.Domain/Services/IPropertyPurchaseService.cs +++ /dev/null @@ -1,13 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.Domain.Services -{ - public interface IPropertyPurchaseService - { - Task> GetPropertyPurchasesAsync(); - Task AddRealEstatePurchase(PropertyPurchase propertyPurchase); - } -} diff --git a/src/MAVN.Service.Referral.DomainServices/AutoMapperProfile.cs b/src/MAVN.Service.Referral.DomainServices/AutoMapperProfile.cs index 8ea90c9..b9e012d 100644 --- a/src/MAVN.Service.Referral.DomainServices/AutoMapperProfile.cs +++ b/src/MAVN.Service.Referral.DomainServices/AutoMapperProfile.cs @@ -1,4 +1,4 @@ -using AutoMapper; +using AutoMapper; using MAVN.Service.Referral.Contract.Events; using MAVN.Service.Referral.Domain.Models; @@ -13,27 +13,6 @@ public AutoMapperProfile() .ForMember(src => src.PhoneNumber, opt => opt.Ignore()) .ForMember(src => src.FullName, opt => opt.Ignore()); - CreateMap(MemberList.Source) - .ForSourceMember(src => src.FirstName, opt => opt.DoNotValidate()) - .ForSourceMember(src => src.LastName, opt => opt.DoNotValidate()) - .ForSourceMember(src => src.PhoneNumber, opt => opt.DoNotValidate()) - .ForSourceMember(src => src.Email, opt => opt.DoNotValidate()) - .ForSourceMember(src => src.Note, opt => opt.DoNotValidate()); - - CreateMap(MemberList.Destination) - .ForMember(dest => dest.FirstName, opt => opt.Ignore()) - .ForMember(dest => dest.LastName, opt => opt.Ignore()) - .ForMember(dest => dest.PhoneNumber, opt => opt.Ignore()) - .ForMember(dest => dest.Email, opt => opt.Ignore()) - .ForMember(dest => dest.Note, opt => opt.Ignore()); - - CreateMap(MemberList.Destination) - .ForMember(dest => dest.FirstName, opt => opt.Ignore()) - .ForMember(dest => dest.LastName, opt => opt.Ignore()) - .ForMember(dest => dest.PhoneNumber, opt => opt.Ignore()) - .ForMember(dest => dest.Email, opt => opt.Ignore()) - .ForMember(dest => dest.Note, opt => opt.Ignore()); - CreateMap(MemberList.Source) .ForMember(dest => dest.CustomerId, opt => opt.Ignore()) .ForMember(dest => dest.FirstName, opt => opt.Ignore()) diff --git a/src/MAVN.Service.Referral.DomainServices/Managers/CommissionManager.cs b/src/MAVN.Service.Referral.DomainServices/Managers/CommissionManager.cs deleted file mode 100644 index d9ad1b6..0000000 --- a/src/MAVN.Service.Referral.DomainServices/Managers/CommissionManager.cs +++ /dev/null @@ -1,35 +0,0 @@ -using AutoMapper; -using MAVN.Service.Referral.Contract.Events; -using MAVN.Service.Referral.Domain.Models; - -namespace MAVN.Service.Referral.DomainServices.Managers -{ - public class CommissionManager - - { - private readonly IMapper _mapper; - - public CommissionManager(IMapper mapper) - { - _mapper = mapper; - } - - public T ToCommissionEvent(PropertyPurchase propertyPurchase, ReferralLeadEncrypted lead) - where T : PropertyPurchaseReferralEvent - { - var propertyPurchaseEvent = new PropertyPurchaseReferralEvent - { - ReferrerId = lead.AgentId.ToString(), - TimeStamp = propertyPurchase.Timestamp, - CurrencyCode = propertyPurchase.CurrencyCode, - VatAmount = propertyPurchase.VatAmount, - DiscountAmount = propertyPurchase.DiscountAmount, - NetPropertyPrice = propertyPurchase.NetPropertyPrice, - SellingPropertyPrice = propertyPurchase.SellingPropertyPrice, - CalculatedCommissionAmount = propertyPurchase.CalculatedCommissionAmount, - ReferralId = lead.Id.ToString() - }; - return _mapper.Map(propertyPurchaseEvent); - } - } -} diff --git a/src/MAVN.Service.Referral.DomainServices/Services/CommonReferralService.cs b/src/MAVN.Service.Referral.DomainServices/Services/CommonReferralService.cs index aeea6d1..42d0350 100644 --- a/src/MAVN.Service.Referral.DomainServices/Services/CommonReferralService.cs +++ b/src/MAVN.Service.Referral.DomainServices/Services/CommonReferralService.cs @@ -3,7 +3,6 @@ using System.Linq; using System.Threading.Tasks; using AutoMapper; -using MAVN.Service.Referral.Domain.Entities; using MAVN.Service.Referral.Domain.Models; using MAVN.Service.Referral.Domain.Services; diff --git a/src/MAVN.Service.Referral.DomainServices/Services/OfferToPurchaseService.cs b/src/MAVN.Service.Referral.DomainServices/Services/OfferToPurchaseService.cs deleted file mode 100644 index 101c61a..0000000 --- a/src/MAVN.Service.Referral.DomainServices/Services/OfferToPurchaseService.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Lykke.RabbitMqBroker.Publisher; -using MAVN.Service.Referral.Contract.Events; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.Domain.Services; - -namespace MAVN.Service.Referral.DomainServices.Services -{ - public class OfferToPurchaseService : IOfferToPurchaseService - { - private readonly IReferralLeadRepository _referralLeadRepository; - private readonly IOfferToPurchasePurchaseRepository _offerToPurchasePurchaseRepository; - private readonly IRabbitPublisher _offerToPurchasePublisher; - - public OfferToPurchaseService( - IReferralLeadRepository referralLeadRepository, - IOfferToPurchasePurchaseRepository offerToPurchasePurchaseRepository, - IRabbitPublisher offerToPurchasePublisher) - { - _referralLeadRepository = referralLeadRepository; - _offerToPurchasePurchaseRepository = offerToPurchasePurchaseRepository; - _offerToPurchasePublisher = offerToPurchasePublisher; - } - - public async Task<(bool isSuccessful, string errorMessage)> ProcessOfferToPurchaseAsync( - OfferToPurchase offerToPurchase) - { - if (!await _referralLeadRepository.DoesExistAsync(offerToPurchase.ReferId)) - { - return (false, $"Referral lead with id '{offerToPurchase.ReferId} does not exist.'"); - } - - await _offerToPurchasePurchaseRepository.InsertAsync(offerToPurchase); - - var lead = await _referralLeadRepository.GetAsync(offerToPurchase.ReferId); - - await _offerToPurchasePublisher.PublishAsync(new OfferToPurchaseByLeadEvent - { - AgentId = lead.AgentId.ToString(), - TimeStamp = offerToPurchase.Timestamp, - CurrencyCode = offerToPurchase.CurrencyCode, VatAmount = offerToPurchase.VatAmount, - DiscountAmount = offerToPurchase.DiscountAmount, NetPropertyPrice = offerToPurchase.NetPropertyPrice, - SellingPropertyPrice = offerToPurchase.SellingPropertyPrice, - CampaignId = lead.CampaignId.Value, - UnitLocationCode = offerToPurchase.UnitLocationCode, - ReferralId = lead.Id.ToString() - }); - - return (true, string.Empty); - } - - public async Task> GetOffersToPurchasesAsync() - { - return await _offerToPurchasePurchaseRepository.GetAsync(); - } - } -} diff --git a/src/MAVN.Service.Referral.DomainServices/Services/PropertyPurchaseService.cs b/src/MAVN.Service.Referral.DomainServices/Services/PropertyPurchaseService.cs deleted file mode 100644 index e26ea76..0000000 --- a/src/MAVN.Service.Referral.DomainServices/Services/PropertyPurchaseService.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.Domain.Services; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Exceptions; -using MAVN.Service.Referral.DomainServices.Managers; - -namespace MAVN.Service.Referral.DomainServices.Services -{ - public class PropertyPurchaseService : IPropertyPurchaseService - { - private const string EstatePurchaseConditionName = "estate-lead-referral"; - - private readonly IReferralLeadRepository _referralLeadRepository; - private readonly IPropertyPurchaseRepository _propertyPurchaseRepository; - private readonly IStakeService _stakeService; - private readonly CommissionManager _commissionManager; - - public PropertyPurchaseService( - IReferralLeadRepository referralLeadRepository, - IPropertyPurchaseRepository propertyPurchaseRepository, - IStakeService stakeService, - CommissionManager commissionManager) - { - _referralLeadRepository = referralLeadRepository; - _propertyPurchaseRepository = propertyPurchaseRepository; - _stakeService = stakeService; - _commissionManager = commissionManager; - } - - public async Task> GetPropertyPurchasesAsync() - { - return await _propertyPurchaseRepository.GetAsync(); - } - - public async Task AddRealEstatePurchase(PropertyPurchase propertyPurchase) - { - var lead = await _referralLeadRepository.GetAsync(propertyPurchase.ReferralLeadId); - if (lead == null) - { - throw new ReferralDoesNotExistException($"Referral lead with id '{propertyPurchase.ReferralLeadId} does not exist.'"); - } - - // If duplicate comes we want to skip releasing stake and inserting new entity - if (!await _propertyPurchaseRepository.PropertyPurchaseExistsAsync(propertyPurchase.ReferralLeadId)) - { - await _propertyPurchaseRepository.InsertAsync(propertyPurchase); - - if (lead.StakeEnabled) - { - await _stakeService.ReleaseStake(lead.Id.ToString("D"), lead.CampaignId.Value, EstatePurchaseConditionName); - } - } - - return lead.CampaignId.Value; - } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/AutofacModule.cs b/src/MAVN.Service.Referral.MsSqlRepositories/AutofacModule.cs index a110ca7..db8deda 100644 --- a/src/MAVN.Service.Referral.MsSqlRepositories/AutofacModule.cs +++ b/src/MAVN.Service.Referral.MsSqlRepositories/AutofacModule.cs @@ -1,4 +1,4 @@ -using Autofac; +using Autofac; using Lykke.Common.MsSql; using MAVN.Service.Referral.Domain.Repositories; using MAVN.Service.Referral.MsSqlRepositories.Repositories; @@ -29,21 +29,9 @@ protected override void Load(ContainerBuilder builder) .As() .SingleInstance(); - builder.RegisterType() - .As() - .SingleInstance(); - - builder.RegisterType() - .As() - .SingleInstance(); - builder.RegisterType() .As() .SingleInstance(); - - builder.RegisterType() - .As() - .SingleInstance(); } } } diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/AutomapperProfile.cs b/src/MAVN.Service.Referral.MsSqlRepositories/AutomapperProfile.cs index 43e42d8..b69fcce 100644 --- a/src/MAVN.Service.Referral.MsSqlRepositories/AutomapperProfile.cs +++ b/src/MAVN.Service.Referral.MsSqlRepositories/AutomapperProfile.cs @@ -1,4 +1,4 @@ -using AutoMapper; +using AutoMapper; using MAVN.Service.Referral.Domain.Models; using MAVN.Service.Referral.MsSqlRepositories.Entities; @@ -17,46 +17,12 @@ public AutoMapperProfile() .ForMember(r => r.ReferralCode, opt => opt.MapFrom(x => x.ReferralCode)) .ForMember(r => r.Id, opt => opt.MapFrom(r => r.CustomerId)); - CreateMap(); - - CreateMap() - .ForMember(src => src.VatAmount, opt => opt.Ignore()) - .ForMember(src => src.SellingPropertyPrice, opt => opt.Ignore()) - .ForMember(src => src.NetPropertyPrice, opt => opt.Ignore()) - .ForMember(src => src.DiscountAmount, opt => opt.Ignore()) - .ForMember(src => src.CalculatedCommissionAmount, opt => opt.Ignore()) - .ForMember(src => src.CurrencyCode, opt => opt.Ignore()); - - CreateMap(); - - CreateMap(); - - CreateMap() - .ForMember(src => src.VatAmount, opt => opt.Ignore()) - .ForMember(src => src.SellingPropertyPrice, opt => opt.Ignore()) - .ForMember(src => src.NetPropertyPrice, opt => opt.Ignore()) - .ForMember(src => src.DiscountAmount, opt => opt.Ignore()) - .ForMember(src => src.CurrencyCode, opt => opt.Ignore()) - .ForMember(src => src.UnitLocationCode, opt => opt.Ignore()); - CreateMap(MemberList.Source); CreateMap(MemberList.Destination); - CreateMap(MemberList.Source) - .ForMember(src => src.OffersToPurchase, opt => opt.Ignore()) - .ForMember(src => src.PropertyPurchases, opt => opt.Ignore()); - CreateMap(MemberList.Destination) - .ForSourceMember(src => src.OffersToPurchase, opt => opt.DoNotValidate()) - .ForSourceMember(src => src.PropertyPurchases, opt => opt.DoNotValidate()); - - CreateMap(MemberList.Destination) - .ForMember(dest => dest.OffersCount, opt => opt.MapFrom(src => src.OffersToPurchase.Count)) - .ForMember(dest => dest.PurchaseCount, opt => opt.MapFrom(src => src.PropertyPurchases.Count)); - // Friend Referral CreateMap(MemberList.Destination); - CreateMap(MemberList.Destination) .ForMember(src => src.Email, opt => opt.Ignore()) .ForMember(src => src.FullName, opt => opt.Ignore()); diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/OfferToPurchaseEntity.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Entities/OfferToPurchaseEntity.cs deleted file mode 100644 index 5afa264..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/OfferToPurchaseEntity.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MAVN.Service.Referral.MsSqlRepositories.Entities -{ - [Table("offer_to_purchase")] - public class OfferToPurchaseEntity : BaseEntity - { - [Column("refer_id")] - public Guid ReferId { get; set; } - - [Column("timestamp")] - public DateTime Timestamp { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/PropertyPurchaseEntity.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Entities/PropertyPurchaseEntity.cs deleted file mode 100644 index e1b4206..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/PropertyPurchaseEntity.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MAVN.Service.Referral.MsSqlRepositories.Entities -{ - [Table("property_purchase")] - public class PropertyPurchaseEntity : BaseEntity - { - [Column("refer_lead_id")] - public Guid ReferralLeadId { get; set; } - - [Column("commission_number")] - public int CommissionNumber { get; set; } - - [Column("timestamp")] - public DateTime Timestamp { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadEntity.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadEntity.cs deleted file mode 100644 index 8e64c09..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadEntity.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; - -namespace MAVN.Service.Referral.MsSqlRepositories.Entities -{ - [Table("referral_lead")] - public class ReferralLeadEntity : BaseEntity - { - [Column("phone_country_code_id")] - public int PhoneCountryCodeId { get; set; } - - [Column("phone_number_hash", TypeName = "char(64)")] - public string PhoneNumberHash { get; set; } - - [Column("email_hash", TypeName = "char(64)")] - public string EmailHash { get; set; } - - [Column("agent_id")] - public Guid AgentId { get; set; } - - [Column("salesforce_id", TypeName = "varchar(200)")] - public string SalesforceId { get; set; } - - [Column("agent_salesforce_id", TypeName = "varchar(200)")] - public string AgentSalesforceId { get; set; } - - [Column("response_status", TypeName = "varchar(64)")] - public string ResponseStatus { get; set; } - - [Column("confirmation_token", TypeName = "varchar(200)")] - public string ConfirmationToken { set; get; } - - [Column("campaign_id")] - public Guid? CampaignId { get; set; } - - [Column("stake_enabled")] - public bool StakeEnabled { get; set; } - - [Column("state")] - public ReferralLeadState State { get; set; } - - [Column("creation_datetime")] - public DateTime CreationDateTime { get; set; } - - public ICollection OffersToPurchase { get; set; } - - public ICollection PropertyPurchases { get; set; } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadState.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadState.cs deleted file mode 100644 index f71d2b9..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Entities/ReferralLeadState.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace MAVN.Service.Referral.MsSqlRepositories.Entities -{ - public enum ReferralLeadState - { - Pending, - Confirmed, - Approved, - Rejected - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.Designer.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.Designer.cs new file mode 100644 index 0000000..6d5b048 --- /dev/null +++ b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.Designer.cs @@ -0,0 +1,166 @@ +// +using System; +using MAVN.Service.Referral.MsSqlRepositories; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace MAVN.Service.Referral.MsSqlRepositories.Migrations +{ + [DbContext(typeof(ReferralContext))] + [Migration("20200505104830_RemoveReferralLead")] + partial class RemoveReferralLead + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("referral") + .HasAnnotation("ProductVersion", "2.2.4-servicing-10062") + .HasAnnotation("Relational:MaxIdentifierLength", 128) + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.FriendReferralEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id"); + + b.Property("CampaignId") + .HasColumnName("campaign_id"); + + b.Property("CreationDateTime") + .HasColumnName("creation_datetime"); + + b.Property("ReferredId") + .HasColumnName("referred_id"); + + b.Property("ReferrerId") + .HasColumnName("referrer_id"); + + b.Property("State") + .HasColumnName("state"); + + b.HasKey("Id"); + + b.ToTable("friend_referral"); + }); + + modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PurchaseReferralHistoryEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id"); + + b.Property("ReferredId") + .HasColumnName("referred_id"); + + b.Property("ReferrerId") + .HasColumnName("referrer_id"); + + b.HasKey("Id"); + + b.HasIndex("ReferredId"); + + b.HasIndex("ReferrerId"); + + b.ToTable("purchase_referral"); + }); + + modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralEntity", b => + { + b.Property("CustomerId") + .ValueGeneratedOnAdd() + .HasColumnName("customer_id"); + + b.Property("ReferralCode") + .HasColumnName("referral_code") + .HasColumnType("varchar(64)"); + + b.HasKey("CustomerId"); + + b.HasIndex("ReferralCode") + .IsUnique() + .HasFilter("[referral_code] IS NOT NULL"); + + b.ToTable("customer_referral"); + }); + + modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralHotelEntity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnName("id"); + + b.Property("CampaignId") + .HasColumnName("campaign_id"); + + b.Property("ConfirmationToken") + .HasColumnName("confirmation_token"); + + b.Property("CreationDateTime") + .HasColumnName("creation_datetime"); + + b.Property("EmailHash") + .HasColumnName("email_hash") + .HasColumnType("char(64)"); + + b.Property("ExpirationDateTime") + .HasColumnName("expiration_datetime"); + + b.Property("FullNameHash") + .HasColumnName("name_hash") + .HasColumnType("char(64)"); + + b.Property("Location") + .HasColumnName("location"); + + b.Property("PartnerId") + .HasColumnName("partner_id"); + + b.Property("PhoneCountryCodeId") + .HasColumnName("phone_country_code_id"); + + b.Property("PhoneNumberHash") + .HasColumnName("phone_number_hash") + .HasColumnType("char(64)"); + + b.Property("ReferrerId") + .HasColumnName("referrer_id"); + + b.Property("StakeEnabled") + .HasColumnName("stake_enabled"); + + b.Property("State") + .IsRequired() + .HasColumnName("state"); + + b.HasKey("Id"); + + b.HasIndex("ConfirmationToken"); + + b.HasIndex("EmailHash"); + + b.HasIndex("ReferrerId"); + + b.ToTable("referral_hotel"); + }); + + modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PurchaseReferralHistoryEntity", b => + { + b.HasOne("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralEntity", "Referred") + .WithMany("PurchasesReferred") + .HasForeignKey("ReferredId") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralEntity", "Referrer") + .WithMany("PurchaseReferrers") + .HasForeignKey("ReferrerId") + .OnDelete(DeleteBehavior.Restrict); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.cs new file mode 100644 index 0000000..5d2a206 --- /dev/null +++ b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/20200505104830_RemoveReferralLead.cs @@ -0,0 +1,105 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +namespace MAVN.Service.Referral.MsSqlRepositories.Migrations +{ + public partial class RemoveReferralLead : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "offer_to_purchase", + schema: "referral"); + + migrationBuilder.DropTable( + name: "property_purchase", + schema: "referral"); + + migrationBuilder.DropTable( + name: "referral_lead", + schema: "referral"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "referral_lead", + schema: "referral", + columns: table => new + { + id = table.Column(nullable: false), + agent_id = table.Column(nullable: false), + agent_salesforce_id = table.Column(type: "varchar(200)", nullable: true), + campaign_id = table.Column(nullable: true), + confirmation_token = table.Column(type: "varchar(200)", nullable: true), + creation_datetime = table.Column(nullable: false), + email_hash = table.Column(type: "char(64)", nullable: true), + phone_country_code_id = table.Column(nullable: false), + phone_number_hash = table.Column(type: "char(64)", nullable: true), + response_status = table.Column(type: "varchar(64)", nullable: true), + salesforce_id = table.Column(type: "varchar(200)", nullable: true), + stake_enabled = table.Column(nullable: false), + state = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_referral_lead", x => x.id); + }); + + migrationBuilder.CreateTable( + name: "offer_to_purchase", + schema: "referral", + columns: table => new + { + id = table.Column(nullable: false), + refer_id = table.Column(nullable: false), + timestamp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_offer_to_purchase", x => x.id); + table.ForeignKey( + name: "FK_offer_to_purchase_referral_lead_refer_id", + column: x => x.refer_id, + principalSchema: "referral", + principalTable: "referral_lead", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "property_purchase", + schema: "referral", + columns: table => new + { + id = table.Column(nullable: false), + commission_number = table.Column(nullable: false), + refer_lead_id = table.Column(nullable: false), + timestamp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_property_purchase", x => x.id); + table.ForeignKey( + name: "FK_property_purchase_referral_lead_refer_lead_id", + column: x => x.refer_lead_id, + principalSchema: "referral", + principalTable: "referral_lead", + principalColumn: "id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateIndex( + name: "IX_offer_to_purchase_refer_id", + schema: "referral", + table: "offer_to_purchase", + column: "refer_id"); + + migrationBuilder.CreateIndex( + name: "IX_property_purchase_refer_lead_id", + schema: "referral", + table: "property_purchase", + column: "refer_lead_id"); + } + } +} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/ReferralContextModelSnapshot.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/ReferralContextModelSnapshot.cs index ebb13dc..e22e09b 100644 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/ReferralContextModelSnapshot.cs +++ b/src/MAVN.Service.Referral.MsSqlRepositories/Migrations/ReferralContextModelSnapshot.cs @@ -1,4 +1,4 @@ -// +// using System; using MAVN.Service.Referral.MsSqlRepositories; using Microsoft.EntityFrameworkCore; @@ -46,47 +46,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("friend_referral"); }); - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.OfferToPurchaseEntity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id"); - - b.Property("ReferId") - .HasColumnName("refer_id"); - - b.Property("Timestamp") - .HasColumnName("timestamp"); - - b.HasKey("Id"); - - b.HasIndex("ReferId"); - - b.ToTable("offer_to_purchase"); - }); - - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PropertyPurchaseEntity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id"); - - b.Property("CommissionNumber") - .HasColumnName("commission_number"); - - b.Property("ReferralLeadId") - .HasColumnName("refer_lead_id"); - - b.Property("Timestamp") - .HasColumnName("timestamp"); - - b.HasKey("Id"); - - b.HasIndex("ReferralLeadId"); - - b.ToTable("property_purchase"); - }); - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PurchaseReferralHistoryEntity", b => { b.Property("Id") @@ -187,75 +146,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("referral_hotel"); }); - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralLeadEntity", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnName("id"); - - b.Property("AgentId") - .HasColumnName("agent_id"); - - b.Property("AgentSalesforceId") - .HasColumnName("agent_salesforce_id") - .HasColumnType("varchar(200)"); - - b.Property("CampaignId") - .HasColumnName("campaign_id"); - - b.Property("ConfirmationToken") - .HasColumnName("confirmation_token") - .HasColumnType("varchar(200)"); - - b.Property("CreationDateTime") - .HasColumnName("creation_datetime"); - - b.Property("EmailHash") - .HasColumnName("email_hash") - .HasColumnType("char(64)"); - - b.Property("PhoneCountryCodeId") - .HasColumnName("phone_country_code_id"); - - b.Property("PhoneNumberHash") - .HasColumnName("phone_number_hash") - .HasColumnType("char(64)"); - - b.Property("ResponseStatus") - .HasColumnName("response_status") - .HasColumnType("varchar(64)"); - - b.Property("SalesforceId") - .HasColumnName("salesforce_id") - .HasColumnType("varchar(200)"); - - b.Property("StakeEnabled") - .HasColumnName("stake_enabled"); - - b.Property("State") - .HasColumnName("state"); - - b.HasKey("Id"); - - b.ToTable("referral_lead"); - }); - - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.OfferToPurchaseEntity", b => - { - b.HasOne("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralLeadEntity") - .WithMany("OffersToPurchase") - .HasForeignKey("ReferId") - .OnDelete(DeleteBehavior.Restrict); - }); - - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PropertyPurchaseEntity", b => - { - b.HasOne("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralLeadEntity") - .WithMany("PropertyPurchases") - .HasForeignKey("ReferralLeadId") - .OnDelete(DeleteBehavior.Restrict); - }); - modelBuilder.Entity("MAVN.Service.Referral.MsSqlRepositories.Entities.PurchaseReferralHistoryEntity", b => { b.HasOne("MAVN.Service.Referral.MsSqlRepositories.Entities.ReferralEntity", "Referred") diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/ReferralContext.cs b/src/MAVN.Service.Referral.MsSqlRepositories/ReferralContext.cs index 685537e..dc9a049 100644 --- a/src/MAVN.Service.Referral.MsSqlRepositories/ReferralContext.cs +++ b/src/MAVN.Service.Referral.MsSqlRepositories/ReferralContext.cs @@ -15,9 +15,6 @@ public class ReferralContext : MsSqlContext public DbSet Referrals { get; set; } public DbSet FriendReferrals { get; set; } public DbSet PurchaseReferrals { get; set; } - public DbSet ReferralLeads { get; set; } - public DbSet PropertyPurchases { get; set; } - public DbSet OfferToPurchases { get; set; } public DbSet ReferralHotels { get; set; } // C-tor for EF migrations @@ -65,18 +62,6 @@ protected override void OnLykkeModelCreating(ModelBuilder modelBuilder) .HasForeignKey(e => e.ReferrerId) .OnDelete(DeleteBehavior.Restrict); - modelBuilder.Entity() - .HasMany(e => e.OffersToPurchase) - .WithOne() - .HasForeignKey(e => e.ReferId) - .OnDelete(DeleteBehavior.Restrict); - - modelBuilder.Entity() - .HasMany(e => e.PropertyPurchases) - .WithOne() - .HasForeignKey(e => e.ReferralLeadId) - .OnDelete(DeleteBehavior.Restrict); - modelBuilder .Entity() .Property(e => e.State) diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/OfferToPurchasePurchaseRepository.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/OfferToPurchasePurchaseRepository.cs deleted file mode 100644 index fe9d32e..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/OfferToPurchasePurchaseRepository.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using AutoMapper; -using Lykke.Common.MsSql; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; -using Microsoft.EntityFrameworkCore; - -namespace MAVN.Service.Referral.MsSqlRepositories.Repositories -{ - public class OfferToPurchasePurchaseRepository : IOfferToPurchasePurchaseRepository - { - private readonly MsSqlContextFactory _msSqlContextFactory; - private readonly IMapper _mapper; - - public OfferToPurchasePurchaseRepository(MsSqlContextFactory msSqlContextFactory, IMapper mapper) - { - _msSqlContextFactory = msSqlContextFactory; - _mapper = mapper; - } - - public async Task InsertAsync(OfferToPurchase offerToPurchase) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - await context.AddAsync(_mapper.Map(offerToPurchase)); - - await context.SaveChangesAsync(); - } - } - - public async Task> GetAsync() - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = await context.OfferToPurchases.ToListAsync(); - - return _mapper.Map>(entities); - } - } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/PropertyPurchaseRepository.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/PropertyPurchaseRepository.cs deleted file mode 100644 index eff0e99..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/PropertyPurchaseRepository.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using AutoMapper; -using Lykke.Common.MsSql; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; -using Microsoft.EntityFrameworkCore; - -namespace MAVN.Service.Referral.MsSqlRepositories.Repositories -{ - public class PropertyPurchaseRepository : IPropertyPurchaseRepository - { - private readonly IDbContextFactory _msSqlContextFactory; - private readonly IMapper _mapper; - - public PropertyPurchaseRepository(IDbContextFactory msSqlContextFactory, IMapper mapper) - { - _msSqlContextFactory = msSqlContextFactory; - _mapper = mapper; - } - - public async Task InsertAsync(PropertyPurchase propertyPurchase) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - await context.AddAsync(_mapper.Map(propertyPurchase)); - - await context.SaveChangesAsync(); - } - } - - public async Task> GetAsync() - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = await context.PropertyPurchases.ToListAsync(); - - return _mapper.Map>(entities); - } - } - - public async Task GetUniqueLeadCount() - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - // Order by throws an EF "cannot be evaluated exception" - var count = await context.PropertyPurchases.Select(p => p.ReferralLeadId) - .Distinct() - .CountAsync(); - - return count; - } - } - - public async Task PropertyPurchaseExistsAsync(Guid referralLeadId) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - return await context.PropertyPurchases.AnyAsync(e => e.ReferralLeadId == referralLeadId); - } - } - } -} diff --git a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/ReferralLeadRepository.cs b/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/ReferralLeadRepository.cs deleted file mode 100644 index 7a567a4..0000000 --- a/src/MAVN.Service.Referral.MsSqlRepositories/Repositories/ReferralLeadRepository.cs +++ /dev/null @@ -1,198 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Linq.Expressions; -using System.Threading.Tasks; -using AutoMapper; -using Lykke.Common.MsSql; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; -using Microsoft.EntityFrameworkCore; - -namespace MAVN.Service.Referral.MsSqlRepositories.Repositories -{ - public class ReferralLeadRepository : IReferralLeadRepository - { - private readonly IDbContextFactory _msSqlContextFactory; - private readonly IMapper _mapper; - - public ReferralLeadRepository(IDbContextFactory msSqlContextFactory, IMapper mapper) - { - _msSqlContextFactory = msSqlContextFactory; - _mapper = mapper; - } - - public async Task CreateAsync(ReferralLeadEncrypted referralLeadEncrypted) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entity = _mapper.Map(referralLeadEncrypted); - - entity.CreationDateTime = DateTime.UtcNow; - - await context.AddAsync(entity); - - await context.SaveChangesAsync(); - - return _mapper.Map(entity); - } - } - - public async Task UpdateAsync(ReferralLeadEncrypted referralLeadEncrypted) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entity = _mapper.Map(referralLeadEncrypted); - - context.Update(entity); - - await context.SaveChangesAsync(); - - return _mapper.Map(entity); - } - } - - public async Task> GetByEmailHashAsync(string emailHash) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = await context.ReferralLeads - .Where(c => c.EmailHash == emailHash) - .ToListAsync(); - - return _mapper.Map>(entities); - } - } - - public async Task> GetByPhoneNumberHashAsync(int countryCodeId, - string phoneNumberHash) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = await context.ReferralLeads - .Where(c => c.PhoneCountryCodeId == countryCodeId && c.PhoneNumberHash == phoneNumberHash) - .ToListAsync(); - - return _mapper.Map>(entities); - } - } - - public async Task GetByConfirmationTokenAsync(string confirmationToken) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entity = await context.ReferralLeads - .FirstOrDefaultAsync(c => c.ConfirmationToken == confirmationToken); - - return _mapper.Map(entity); - } - } - - public async Task> GetForReferrerAsync( - Guid referrerId, - Guid? campaignId, - IEnumerable states) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = context.ReferralLeads - .Where(c => c.AgentId == referrerId); - - if (campaignId.HasValue) - { - entities = entities - .Where(c => c.CampaignId == campaignId.Value); - } - - if (states != null && states.Any()) - { - var mappedStates = states.Select(s => _mapper.Map(s)); - - entities = entities - .Where(c => mappedStates.Contains(c.State)); - } - - entities = entities.Include(o => o.OffersToPurchase) - .Include(o => o.PropertyPurchases); - - return _mapper.Map>(await entities.ToListAsync()); - } - } - - public async Task> GetApprovedAsync() - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entities = await context.ReferralLeads - .Where(c => c.State == ReferralLeadState.Approved) - .ToListAsync(); - - return _mapper.Map>(entities); - } - } - - public async Task GetAsync(Guid referLeadId) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var entity = await context.ReferralLeads.FirstOrDefaultAsync(c => c.Id == referLeadId); - - return _mapper.Map(entity); - } - } - - public async Task DoesExistAsync(Guid referLeadId) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - return await context.ReferralLeads.AnyAsync(c => c.Id == referLeadId); - } - } - - public async Task GetCountAsync(Domain.Entities.ReferralLeadState? status = null) - { - Expression> filter = c => true; - - if (status.HasValue) - { - var state = _mapper.Map(status); - - filter = c => c.State == state; - } - - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var count = await context.ReferralLeads - .CountAsync(filter); - - return count; - } - } - - public async Task> GetApprovedReferralsCountByAgentsAsync(List agentIds) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var query = from b in context.ReferralLeads - where b.State == ReferralLeadState.Approved && agentIds.Contains(b.AgentId) - group b.Id by b.AgentId into g - select new Tuple(g.Key, g.Count()); - - var result = await query.ToListAsync(); - - return agentIds.ToDictionary(x => x, x => result.SingleOrDefault(y => y.Item1 == x)?.Item2 ?? 0); - } - } - - public async Task> GetByReferralIdsAsync(List referralIds) - { - using (var context = _msSqlContextFactory.CreateDataContext()) - { - var result = await context.ReferralLeads.Where(l => referralIds.Contains(l.Id)).ToListAsync(); - - return _mapper.Map>(result); - } - } - } -} diff --git a/src/MAVN.Service.Referral/Controllers/ReferralHotelsController.cs b/src/MAVN.Service.Referral/Controllers/ReferralHotelsController.cs index 9d03b2a..9198dc7 100644 --- a/src/MAVN.Service.Referral/Controllers/ReferralHotelsController.cs +++ b/src/MAVN.Service.Referral/Controllers/ReferralHotelsController.cs @@ -41,9 +41,9 @@ public class ReferralHotelsController : BaseController, IReferralHotelsApi } /// - /// ReferralLeadCreateResponse. + /// ReferralHotelCreateResponse. [HttpPost("")] - [ProducesResponseType(typeof(ReferralLeadCreateResponse), (int) HttpStatusCode.OK)] + [ProducesResponseType(typeof(ReferralHotelCreateResponse), (int) HttpStatusCode.OK)] public async Task CreateAsync(ReferralHotelCreateRequest request) { try diff --git a/src/MAVN.Service.Referral/Controllers/ReferralLeadsController.cs b/src/MAVN.Service.Referral/Controllers/ReferralLeadsController.cs deleted file mode 100644 index 2c07379..0000000 --- a/src/MAVN.Service.Referral/Controllers/ReferralLeadsController.cs +++ /dev/null @@ -1,331 +0,0 @@ -//using System; -//using System.Collections.Generic; -//using System.Linq; -//using System.Net; -//using System.Threading.Tasks; -//using AutoMapper; -//using Lykke.Common.Log; -//using Lykke.Service.CustomerProfile.Client; -//using MAVN.Service.Referral.Client; -//using MAVN.Service.Referral.Client.Enums; -//using MAVN.Service.Referral.Client.Models.Requests; -//using MAVN.Service.Referral.Client.Models.Responses; -//using MAVN.Service.Referral.Client.Models.Responses.OfferToPurchase; -//using MAVN.Service.Referral.Client.Models.Responses.PropertyPurchase; -//using MAVN.Service.Referral.Domain.Exceptions; -//using MAVN.Service.Referral.Domain.Models; -//using MAVN.Service.Referral.Domain.Services; -//using Microsoft.AspNetCore.Mvc; - -//namespace MAVN.Service.Referral.Controllers -//{ -// [Route("api/referral-leads")] -// [ApiController] -// public class ReferralLeadsController : BaseController, IReferralLeadApi -// { -// private readonly IPropertyPurchaseService _propertyPurchaseService; -// private readonly IOfferToPurchaseService _offerToPurchaseService; -// private readonly IDemoLeadService _demoLeadService; -// private readonly ICustomerProfileClient _customerProfileClient; -// //private readonly IReferralLeadService _referralLeadService; -// private readonly IMapper _mapper; - -// public ReferralLeadsController( -// //IReferralLeadService referralLeadService, -// IPropertyPurchaseService propertyPurchaseService, -// IOfferToPurchaseService offerToPurchaseService, -// IDemoLeadService demoLeadService, -// ISettingsService settingsService, -// ICustomerProfileClient customerProfileClient, -// IMapper mapper, -// ILogFactory logFactory) : base(settingsService, logFactory) -// { -// _propertyPurchaseService = propertyPurchaseService; -// _offerToPurchaseService = offerToPurchaseService; -// //_referralLeadService = referralLeadService; -// _mapper = mapper; -// _demoLeadService = demoLeadService; -// _customerProfileClient = customerProfileClient; -// } - -// ///// -// ///// ReferralLeadCreateResponse. -// //[HttpPost("")] -// //[ProducesResponseType(typeof(ReferralLeadCreateResponse), (int)HttpStatusCode.OK)] -// //public async Task PostAsync(ReferralLeadCreateRequest referralLeadCreate) -// //{ -// // const string errorMessage = "An error occurred while creating referral lead"; - -// // try -// // { -// // if (!Guid.TryParse(referralLeadCreate.CustomerId, out _)) -// // { -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.GuidCanNotBeParsed, -// // ErrorMessage = "Customer id cannot be parsed." -// // }; -// // } - -// // var customer = await _customerProfileClient.CustomerProfiles.GetByCustomerIdAsync(referralLeadCreate.CustomerId); -// // // Hotel service handles customer == null properly, keep it simple for the demo mode -// // if (customer?.Profile != null && IsDemoMode(customer.Profile.Email)) -// // { -// // await _demoLeadService.CreateReferralLeadAsync(_mapper.Map(referralLeadCreate)); -// // return new ReferralLeadCreateResponse(); -// // } - -// // await _referralLeadService.CreateReferralLeadAsync(_mapper.Map(referralLeadCreate)); -// // } -// // #region ErrorHandling -// // catch (CustomerDoesNotExistException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.CustomerDoesNotExist, ErrorMessage = ex.Message -// // }; -// // } -// // catch (ReferralLeadConfirmationFailedException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.ReferralLeadProcessingFailed, ErrorMessage = ex.Message -// // }; -// // } -// // catch (ReferralLeadAlreadyConfirmedException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.ReferralLeadAlreadyConfirmed, ErrorMessage = ex.Message -// // }; -// // } -// // catch (CustomerNotApprovedAgentException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.CustomerNotApprovedAgent, ErrorMessage = ex.Message -// // }; -// // } -// // catch (CountryCodeDoesNotExistException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.CountryCodeDoesNotExist, ErrorMessage = ex.Message -// // }; -// // } -// // catch (ReferYourselfException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.ReferYourself, ErrorMessage = ex.Message -// // }; -// // } -// // catch (ReferralAlreadyExistException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.ReferralLeadAlreadyExist, ErrorMessage = ex.Message -// // }; -// // } -// // catch (InvalidPhoneNumberException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.InvalidPhoneNumber, ErrorMessage = ex.Message -// // }; -// // } -// // catch (CampaignNotFoundException ex) -// // { -// // Log.Info(errorMessage, context: $"customerId: {referralLeadCreate.CustomerId}; error: {ex.Message}"); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.CampaignNotFound, -// // ErrorMessage = ex.Message -// // }; -// // } -// // catch (InvalidReferralStakeException e) -// // { -// // Log.Info("Invalid stake.", e, process: nameof(ConfirmAsync)); - -// // return new ReferralLeadCreateResponse -// // { -// // ErrorCode = ReferralErrorCodes.InvalidStake -// // }; -// // } -// // #endregion - -// // return new ReferralLeadCreateResponse(); -// //} - -// /// -// /// ReferralLeadCreateResponse. -// [HttpPut("confirm")] -// [ProducesResponseType(typeof(void), (int)HttpStatusCode.NoContent)] -// public async Task ConfirmAsync(ReferralLeadConfirmRequest referralLeadConfirmRequest) -// { -// try -// { -// if (referralLeadConfirmRequest.ConfirmationToken.EndsWith("_demo")) -// { -// await _demoLeadService.ConfirmReferralLeadAsync(referralLeadConfirmRequest.ConfirmationToken); -// return new ReferralLeadConfirmResponse(); -// } - -// await _referralLeadService.ConfirmReferralLeadAsync(referralLeadConfirmRequest.ConfirmationToken); -// } -// catch (ReferralDoesNotExistException e) -// { -// Log.Info(e.Message, process: nameof(PostAsync), context: referralLeadConfirmRequest.ConfirmationToken); - -// return new ReferralLeadConfirmResponse -// { -// ErrorCode = ReferralErrorCodes.ReferralDoesNotExist, -// ErrorMessage = "Referral Lead does not exist." -// }; -// } -// catch (ReferralAlreadyConfirmedException e) -// { -// Log.Info(e.Message, process: nameof(PostAsync), context: referralLeadConfirmRequest.ConfirmationToken); - -// return new ReferralLeadConfirmResponse -// { -// ErrorCode = ReferralErrorCodes.LeadAlreadyConfirmed, -// ErrorMessage = "Referral Lead already confirmed." -// }; -// } - -// return new ReferralLeadConfirmResponse(); -// } - -// [HttpPut("purchase")] -// public async Task AddRealEstatePurchase(RealEstatePurchaseRequest request) -// { -// try -// { -// var campaignId = await _propertyPurchaseService.AddRealEstatePurchase(_mapper.Map(request)); - -// return new RealEstatePurchaseResponse -// { -// CampaignId = campaignId, -// ErrorCode = RealEstatePurchaseErrorCode.None -// }; -// } -// catch (ReferralDoesNotExistException e) -// { -// Log.Info(e.Message); - -// return new RealEstatePurchaseResponse -// { -// ErrorCode = RealEstatePurchaseErrorCode.ReferralNotFound -// }; -// } -// } - -// /// -// /// ReferralLeadListResponse. -// [HttpGet("")] -// [ProducesResponseType(typeof(ReferralLeadListResponse), (int)HttpStatusCode.OK)] -// public async Task GetAsync(string agentId) -// { -// if (!TryParseGuid(agentId, nameof(PostAsync), out var agentIdGuid)) -// { -// return new ReferralLeadListResponse -// { -// ErrorCode = ReferralErrorCodes.GuidCanNotBeParsed, -// ErrorMessage = InvalidIdentifierMessage -// }; -// } - -// var result = await _referralLeadService.GetReferralLeadsForReferrerAsync(agentIdGuid, null, null); - -// return new ReferralLeadListResponse -// { -// ReferralLeads = _mapper.Map>(result) -// }; -// } - -// /// -// /// ApprovedReferralLeadListResponse. -// [HttpGet("approved")] -// [ProducesResponseType(typeof(ApprovedReferralLeadListResponse), (int)HttpStatusCode.OK)] -// public async Task GetApprovedAsync() -// { -// var result = await _referralLeadService.GetApprovedLeadsAsync(); - -// return new ApprovedReferralLeadListResponse -// { -// ReferralLeads = _mapper.Map>(result) -// }; -// } - -// /// -// /// PropertyPurchaseListResponse. -// [HttpGet("property-purchases")] -// [ProducesResponseType(typeof(PropertyPurchaseListResponse), (int)HttpStatusCode.OK)] -// public async Task GetPropertyPurchasesAsync() -// { -// var result = await _propertyPurchaseService.GetPropertyPurchasesAsync(); - -// return new PropertyPurchaseListResponse -// { -// PropertyPurchases = _mapper.Map>(result) -// }; -// } - -// /// -// /// LeadStatisticsResponse. -// [HttpGet("statistic")] -// [ProducesResponseType(typeof(LeadStatisticsResponse), (int)HttpStatusCode.OK)] -// public async Task GetLeadStatisticAsync() -// { -// var result = await _referralLeadService.GetStatistic(); - -// return _mapper.Map(result); -// } - -// /// -// /// OfferToPurchaseListResponse. -// [HttpGet("offer-to-purchases")] -// [ProducesResponseType(typeof(OfferToPurchaseListResponse), (int)HttpStatusCode.OK)] -// public async Task GetOfferToPurchasesAsync() -// { -// var result = await _offerToPurchaseService.GetOffersToPurchasesAsync(); - -// return new OfferToPurchaseListResponse -// { -// OfferToPurchases = _mapper.Map>(result) -// }; -// } - -// // -// [HttpGet("approved-referrals-count-by-agents")] -// [ProducesResponseType(typeof(List), (int) HttpStatusCode.OK)] -// public async Task> GetApprovedReferralsCountByAgentsAsync(List agentIds) -// { -// return (await _referralLeadService.GetApprovedReferralsCountByAgentsAsync(agentIds)) -// .Select(x => new ReferralLeadApprovedByAgentModel -// { -// AgentId = x.Key, -// Count = x.Value -// }) -// .ToList(); -// } -// } -//} diff --git a/src/MAVN.Service.Referral/Models/Validation/ReferralLeadConfirmRequestValidator.cs b/src/MAVN.Service.Referral/Models/Validation/ReferralLeadConfirmRequestValidator.cs deleted file mode 100644 index d687dc5..0000000 --- a/src/MAVN.Service.Referral/Models/Validation/ReferralLeadConfirmRequestValidator.cs +++ /dev/null @@ -1,18 +0,0 @@ -using FluentValidation; -using JetBrains.Annotations; -using MAVN.Service.Referral.Client.Models.Requests; - -namespace MAVN.Service.Referral.Models.Validation -{ - [UsedImplicitly] - public class ReferralLeadConfirmRequestValidator : AbstractValidator - { - public ReferralLeadConfirmRequestValidator() - { - RuleFor(x => x.ConfirmationToken) - .NotNull() - .NotEmpty() - .WithMessage("Confirmation token id is required."); - } - } -} diff --git a/src/MAVN.Service.Referral/Models/Validation/ReferralLeadCreateRequestValidator.cs b/src/MAVN.Service.Referral/Models/Validation/ReferralLeadCreateRequestValidator.cs deleted file mode 100644 index fd2e445..0000000 --- a/src/MAVN.Service.Referral/Models/Validation/ReferralLeadCreateRequestValidator.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Text.RegularExpressions; -using FluentValidation; -using JetBrains.Annotations; -using MAVN.Service.Referral.Client.Models.Requests; - -namespace MAVN.Service.Referral.Models.Validation -{ - [UsedImplicitly] - public class ReferralLeadCreateRequestValidator : AbstractValidator - { - private static readonly Regex NameRegex = new Regex(@"^((?![1-9!@#$%^&*()_+{}|:\""?> x.CustomerId) - .NotEmpty() - .WithMessage("Customer id is required."); - - RuleFor(x => x.FirstName) - .NotEmpty() - .WithMessage("First name is required.") - .MaximumLength(100) - .WithMessage("First name shouldn't be more than 100 characters long.") - .Must(o => NameRegex.IsMatch(o)) - .WithMessage("First name field can contains only letters, periods, hyphens and single quotes."); - - RuleFor(x => x.LastName) - .NotEmpty() - .WithMessage("Last name is required.") - .MaximumLength(100) - .WithMessage("First name shouldn't be more than 100 characters long.") - .Must(o => NameRegex.IsMatch(o)) - .WithMessage("Last name field can contains only letters, periods, hyphens and single quotes."); - - RuleFor(x => x.PhoneCountryCodeId) - .GreaterThan(0) - .WithMessage("Phone country code id should be greater than 0."); - - RuleFor(x => x.PhoneNumber) - .NotEmpty() - .WithMessage("Phone number is required.") - .Length(2, 50) - .WithMessage("Phone number length should be in between 2 and 50 characters long."); - - RuleFor(x => x.Email) - .NotEmpty() - .WithMessage("Email is required.") - .EmailAddress() - .WithMessage("Email should be a valid email address."); - - RuleFor(o => o.Note) - .MaximumLength(2000) - .WithMessage("Note shouldn't be longer than 2000 characters."); - } - } -} diff --git a/src/MAVN.Service.Referral/Modules/ServiceModule.cs b/src/MAVN.Service.Referral/Modules/ServiceModule.cs index caa6e0e..595b582 100644 --- a/src/MAVN.Service.Referral/Modules/ServiceModule.cs +++ b/src/MAVN.Service.Referral/Modules/ServiceModule.cs @@ -32,10 +32,6 @@ protected override void Load(ContainerBuilder builder) .As() .SingleInstance(); - builder.RegisterType() - .As() - .SingleInstance(); - builder.RegisterType() .As() .WithParameter("hotelReferralConfirmEmailLinkFormat", _appSettings.CurrentValue.ReferralService.HotelReferralConfirmEmailSettings.ConfirmLinkFormat) @@ -78,14 +74,6 @@ protected override void Load(ContainerBuilder builder) .WithParameter("globalBaseCurrencyCode", _appSettings.CurrentValue.ReferralService.BaseCurrencyCode) .SingleInstance(); - builder.RegisterType() - .As() - .SingleInstance(); - - builder.RegisterType() - .As() - .SingleInstance(); - builder.RegisterType() .As() .SingleInstance(); diff --git a/src/MAVN.Service.Referral/Profiles/ServiceProfile.cs b/src/MAVN.Service.Referral/Profiles/ServiceProfile.cs index acb2e14..ad100f0 100644 --- a/src/MAVN.Service.Referral/Profiles/ServiceProfile.cs +++ b/src/MAVN.Service.Referral/Profiles/ServiceProfile.cs @@ -10,7 +10,7 @@ namespace MAVN.Service.Referral.Profiles { - public class ServiceProfile: Profile + public class ServiceProfile : Profile { public ServiceProfile() { @@ -26,46 +26,6 @@ public ServiceProfile() .ForSourceMember(c => c.CustomerId, opt => opt.DoNotValidate()) .ForSourceMember(c => c.Id, opt => opt.DoNotValidate()); - // Referral lead - CreateMap(MemberList.Source) - .ForMember(c => c.AgentId, opt => opt.MapFrom(c => c.CustomerId)) - .ForMember(c => c.Id, opt => opt.Ignore()) - .ForMember(c => c.SalesforceId, opt => opt.Ignore()) - .ForMember(c => c.CreationDateTime, opt => opt.Ignore()) - .ForMember(c => c.ResponseStatus, opt => opt.Ignore()) - .ForMember(c => c.AgentSalesforceId, opt => opt.Ignore()) - .ForMember(c => c.ConfirmationToken, opt => opt.Ignore()) - .ForMember(c => c.State, opt => opt.Ignore()); - - CreateMap(MemberList.Source) - .ForMember(c => c.CustomerId, opt => opt.MapFrom(c => c.AgentId)) - .ForSourceMember(c => c.Id, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.SalesforceId, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.CreationDateTime, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.ResponseStatus, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.AgentSalesforceId, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.ConfirmationToken, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.State, opt => opt.DoNotValidate()); - - CreateMap(MemberList.Source) - .ForSourceMember(c => c.ResponseStatus, opt => opt.DoNotValidate()); - - CreateMap(MemberList.Destination) - .ForMember(c => c.ReferralLeadId, opt => opt.MapFrom(dest => dest.Id)) - .ForMember(c => c.Timestamp, opt => opt.MapFrom(dest => dest.CreationDateTime)) - .ForSourceMember(c => c.FirstName, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.LastName, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.PhoneCountryCodeId, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.PhoneNumber, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.Email, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.Note, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.AgentId, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.AgentSalesforceId, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.ResponseStatus, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.ConfirmationToken, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.State, opt => opt.DoNotValidate()) - .ForSourceMember(c => c.CreationDateTime, opt => opt.DoNotValidate()); - // Property purchase CreateMap(MemberList.Destination); @@ -115,8 +75,6 @@ public ServiceProfile() // Common Referrals CreateMap(MemberList.Destination); CreateMap(MemberList.Destination); - CreateMap(MemberList.Source) - .ConvertUsing(value => ConvertCommonReferralStatusToLeadState(value)); CreateMap(MemberList.Source) .ConvertUsing(value => ConvertCommonReferralStatusToHotelState(value)); CreateMap(MemberList.Source) @@ -124,17 +82,10 @@ public ServiceProfile() CreateMap(MemberList.Source) .ConvertUsing(value => ConvertHotelStateToCommonReferralStatus(value)); - CreateMap(MemberList.Source) - .ConvertUsing(value => ConvertLeadStateToCommonReferralStatus(value)); + CreateMap(MemberList.Source) .ConvertUsing(value => ConvertFriendStateToCommonReferralStatus(value)); - CreateMap(MemberList.Destination) - .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.CreationDateTime)) - .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.State)) - .ForMember(dest => dest.ReferralType, opt => opt.MapFrom(src => ReferralType.RealEstate)) - .ForMember(dest => dest.PartnerId, opt => opt.Ignore()); - CreateMap(MemberList.Destination) .ForMember(dest => dest.TimeStamp, opt => opt.MapFrom(src => src.CreationDateTime)) .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.State)) @@ -216,21 +167,6 @@ private ReferralFriendState ConvertCommonReferralStatusToFriendState(CommonRefer } } - private Domain.Entities.ReferralLeadState ConvertCommonReferralStatusToLeadState(CommonReferralStatus value) - { - switch (value) - { - case CommonReferralStatus.Pending: - return Domain.Entities.ReferralLeadState.Pending; - case CommonReferralStatus.Confirmed: - return Domain.Entities.ReferralLeadState.Confirmed; - case CommonReferralStatus.Accepted: - return Domain.Entities.ReferralLeadState.Approved; - default: - return Domain.Entities.ReferralLeadState.Rejected; - } - } - private CommonReferralStatus ConvertHotelStateToCommonReferralStatus(ReferralHotelState value) { switch (value) @@ -261,19 +197,6 @@ private ReferralHotelState ConvertCommonReferralStatusToHotelState(CommonReferra } } - private CommonReferralStatus ConvertLeadStateToCommonReferralStatus(Domain.Entities.ReferralLeadState value) - { - switch (value) - { - case Domain.Entities.ReferralLeadState.Pending: - return CommonReferralStatus.Pending; - case Domain.Entities.ReferralLeadState.Confirmed: - return CommonReferralStatus.Confirmed; - case Domain.Entities.ReferralLeadState.Approved: - return CommonReferralStatus.Accepted; - default: - return CommonReferralStatus.Expired; - } - } } } + diff --git a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/CommonReferralServiceTestsFixture.cs b/tests/MAVN.Service.Referral.Tests/DomainServices/Services/CommonReferralServiceTestsFixture.cs index 10a42e4..8ae0e9c 100644 --- a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/CommonReferralServiceTestsFixture.cs +++ b/tests/MAVN.Service.Referral.Tests/DomainServices/Services/CommonReferralServiceTestsFixture.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using MAVN.Service.Referral.Domain.Entities; using MAVN.Service.Referral.Domain.Models; using MAVN.Service.Referral.Domain.Services; using MAVN.Service.Referral.DomainServices.Services; @@ -22,7 +21,6 @@ public CommonReferralServiceTestsFixture() FriendReferralServiceMock.Object, MapperHelper.CreateAutoMapper()); - ReferralLeadList = new List(); ReferralHotelList = new List(); ReferralFriendList = new List(); @@ -33,21 +31,14 @@ public CommonReferralServiceTestsFixture() //public Mock ReferralLeadServiceMock; public Mock ReferralHotelsServiceMock; public CommonReferralService Service; - public List ReferralLeadList; public List ReferralHotelList; public List ReferralFriendList { get; set; } public void SetupCalls() { - //ReferralLeadServiceMock.Setup(c => c.GetReferralLeadsForReferrerAsync(It.IsAny(), It.IsAny(), It.IsAny>())) - // .ReturnsAsync(() => ReferralLeadList); - ReferralHotelsServiceMock.Setup(c => c.GetByReferrerIdAsync(It.IsAny(), It.IsAny(), It.IsAny>())) .ReturnsAsync(() => ReferralHotelList); - //ReferralLeadServiceMock.Setup(c => c.GetReferralLeadsByReferralIdsAsync(It.IsAny>())) - // .ReturnsAsync(() => ReferralLeadList); - ReferralHotelsServiceMock.Setup(c => c.GetReferralHotelsByReferralIdsAsync(It.IsAny>())) .ReturnsAsync(() => ReferralHotelList); diff --git a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTests.cs b/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTests.cs deleted file mode 100644 index 597272d..0000000 --- a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTests.cs +++ /dev/null @@ -1,72 +0,0 @@ -using System; -using System.Threading.Tasks; -using MAVN.Service.Referral.Domain.Exceptions; -using MAVN.Service.Referral.Domain.Models; -using Moq; -using Xunit; - -namespace MAVN.Service.Referral.Tests.DomainServices.Services -{ - public class PropertyPurchaseServiceTests - { - [Fact] - public async Task ShouldPublishPropertyPurchaseEvent_WhenValidDataIsPassed() - { - // Arrange - var fixture = new PropertyPurchaseServiceTestsFixture() - { - PropertyPurchase = null - }; - - // Act - var dateTime = DateTime.UtcNow; - var referralLeadId = Guid.NewGuid(); - await fixture.Service.AddRealEstatePurchase(new PropertyPurchase - { - ReferralLeadId = referralLeadId, - Timestamp = dateTime, - CommissionNumber = 1 - }); - } - - [Fact] - public async Task ShouldNotPublishPropertyPurchaseEvent_WhenReferralLeadDoesNotExists() - { - // Arrange - var fixture = new PropertyPurchaseServiceTestsFixture() - { - ReferralLead = null - }; - - // Act - var dateTime = DateTime.UtcNow; - - // Assert - await Assert.ThrowsAsync(async () => - { - await fixture.Service.AddRealEstatePurchase(new PropertyPurchase - { - ReferralLeadId = Guid.NewGuid(), - Timestamp = dateTime, - CommissionNumber = 2 - }); - }); - - fixture.PropertyPurchaseRepositorMock.Verify(x => - x.InsertAsync(It.IsAny()), Times.Never); - } - - [Fact] - public async Task ShouldGetAllPropertyPurchases_WhenMethodIsCalled() - { - // Arrange - var fixture = new PropertyPurchaseServiceTestsFixture(); - - // Act - var result = await fixture.Service.GetPropertyPurchasesAsync(); - - // Assert - Assert.Equal(fixture.PropertyPurchases, result); - } - } -} diff --git a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTestsFixture.cs b/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTestsFixture.cs deleted file mode 100644 index 072bdab..0000000 --- a/tests/MAVN.Service.Referral.Tests/DomainServices/Services/PropertyPurchaseServiceTestsFixture.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using MAVN.Service.Referral.Contract.Events; -using MAVN.Service.Referral.Domain.Models; -using MAVN.Service.Referral.Domain.Repositories; -using MAVN.Service.Referral.Domain.Services; -using MAVN.Service.Referral.DomainServices; -using MAVN.Service.Referral.DomainServices.Managers; -using MAVN.Service.Referral.DomainServices.Services; -using Moq; - -namespace MAVN.Service.Referral.Tests.DomainServices.Services -{ - public class PropertyPurchaseServiceTestsFixture - { - public PropertyPurchaseServiceTestsFixture() - { - ReferralLeadRepositoryMock = new Mock(MockBehavior.Strict); - PropertyPurchaseRepositorMock = new Mock(MockBehavior.Strict); - StakeServiceMock = new Mock(MockBehavior.Strict); - - Service = new PropertyPurchaseService( - ReferralLeadRepositoryMock.Object, - PropertyPurchaseRepositorMock.Object, - StakeServiceMock.Object, - new CommissionManager(MapperHelper.CreateAutoMapper())); - - ReferralLead = new ReferralLeadEncrypted - { - Id = Guid.NewGuid(), - AgentId = AgentId, - PhoneNumberHash = PhoneNumber, - EmailHash = Email, - ConfirmationToken = ConfirmationToken, - CampaignId = Guid.NewGuid() - }; - - ReferralLeadWithDetails = new ReferralLeadEncryptedWithDetails - { - Id = Guid.NewGuid(), - AgentId = AgentId, - PhoneNumberHash = PhoneNumber, - EmailHash = Email, - ConfirmationToken = ConfirmationToken - }; - - PropertyPurchase = new PropertyPurchase - { - Id = Guid.NewGuid(), - ReferralLeadId = Guid.NewGuid(), - Timestamp = DateTime.UtcNow - }; - - ReferralLeads = new List { ReferralLead }; - - ReferralLeadsWithDetails = new List { ReferralLeadWithDetails }; - - PropertyPurchases = new List - { - PropertyPurchase, - PropertyPurchase, - PropertyPurchase - }; - - SetupCalls(); - } - - public Mock StakeServiceMock { get; set; } - - public Mock ReferralLeadRepositoryMock; - public Mock PropertyPurchaseRepositorMock; - public PropertyPurchaseService Service; - - public Guid AgentId = Guid.NewGuid(); - public string FirstName = "fname"; - public string LastName = "lname"; - public string Email = "email@mail.com"; - public string PhoneNumber = "number"; - public string Note = "note"; - public string SalesforceId = "salesforceId"; - public bool PropertyPurchaseExists = false; - public string ConfirmationToken = Guid.NewGuid().ToString(); - public ReferralLeadEncrypted ReferralLead; - public ReferralLeadEncryptedWithDetails ReferralLeadWithDetails; - public PropertyPurchase PropertyPurchase; - public IReadOnlyList ReferralLeads; - public IReadOnlyList ReferralLeadsWithDetails; - public IReadOnlyList PropertyPurchases; - public List Referrals = new List(); - - public void SetupCalls() - { - var emptyList = new List(); - - var fullList = new List(); - fullList.Add(ReferralLead); - - ReferralLeadRepositoryMock.Setup(c => c.CreateAsync(ReferralLead)) - .ReturnsAsync(() => ReferralLead); - - ReferralLeadRepositoryMock.Setup(c => c.GetAsync(It.IsAny())) - .ReturnsAsync(() => ReferralLead); - - ReferralLeadRepositoryMock.Setup(c => c.GetByEmailHashAsync(It.IsAny())) - .ReturnsAsync((string s) => ReferralLead.EmailHash == s ? fullList : emptyList); - - ReferralLeadRepositoryMock.Setup(c => c.GetByPhoneNumberHashAsync(It.IsAny(), It.IsAny())) - .ReturnsAsync((int cc, string s) => ReferralLead.PhoneNumberHash == s ? fullList : emptyList); - - ReferralLeadRepositoryMock.Setup(c => c.GetByConfirmationTokenAsync(It.IsAny())) - .ReturnsAsync((string s) => ReferralLead.ConfirmationToken == s ? ReferralLead : null); - - ReferralLeadRepositoryMock.Setup(c => c.DoesExistAsync(It.IsAny())) - .ReturnsAsync(() => ReferralLead != null); - - ReferralLeadRepositoryMock.Setup(c => c.UpdateAsync(ReferralLead)) - .ReturnsAsync(() => ReferralLead); - - ReferralLeadRepositoryMock.Setup(c => c.GetForReferrerAsync(It.IsAny(), null, null)) - .ReturnsAsync(() => ReferralLeadsWithDetails); - - PropertyPurchaseRepositorMock.Setup(c => c.InsertAsync(It.IsAny())) - .Returns(Task.CompletedTask); - - PropertyPurchaseRepositorMock.Setup(c => c.GetAsync()) - .ReturnsAsync(() => PropertyPurchases); - - PropertyPurchaseRepositorMock.Setup(c => c.PropertyPurchaseExistsAsync(It.IsAny())) - .ReturnsAsync(() => PropertyPurchaseExists); - } - } -} diff --git a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/PropertyPurchaseRepositoryFixture.cs b/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/PropertyPurchaseRepositoryFixture.cs deleted file mode 100644 index ef20172..0000000 --- a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/PropertyPurchaseRepositoryFixture.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using System.Collections.Generic; -using MAVN.Service.Referral.MsSqlRepositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; -using Microsoft.EntityFrameworkCore; - -namespace MAVN.Service.Referral.Tests.MsSqlRepositories.Fixtures -{ - public class PropertyPurchaseRepositoryFixture : BaseRepositoryFixture - { - protected override void Seed(ReferralContext context) - { - context.PropertyPurchases.AddRange( - new List() - { - new PropertyPurchaseEntity - { - Id = Guid.NewGuid(), - ReferralLeadId = Guid.NewGuid() - }, - new PropertyPurchaseEntity - { - Id = Guid.NewGuid(), - ReferralLeadId = Guid.Parse("57e80137-984c-44f0-ad6f-b555d46cd934") - }, - new PropertyPurchaseEntity - { - Id = Guid.NewGuid(), - ReferralLeadId = Guid.NewGuid() - } - }); - context.SaveChanges(); - } - } -} diff --git a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/ReferralLeadRepositoryFixture.cs b/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/ReferralLeadRepositoryFixture.cs deleted file mode 100644 index 9f29f8a..0000000 --- a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/Fixtures/ReferralLeadRepositoryFixture.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Collections.Generic; -using MAVN.Service.Referral.MsSqlRepositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; - -namespace MAVN.Service.Referral.Tests.MsSqlRepositories.Fixtures -{ - public class ReferralLeadRepositoryFixture : BaseRepositoryFixture - { - protected override void Seed(ReferralContext context) - { - context.ReferralLeads.AddRange( - new List - { - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.Parse("78ceb436-29a9-499c-92fc-ec77152e32d8"), - State = ReferralLeadState.Pending - }, - new ReferralLeadEntity - { - Id = Guid.Parse("57e80137-984c-44f0-ad6f-b555d46cd934"), - State = ReferralLeadState.Pending - }, - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.Parse("78ceb436-29a9-499c-92fc-ec77152e32d8"), - EmailHash = "email@mail.com", - ConfirmationToken = "3l2k3h4lk", - State = ReferralLeadState.Pending - }, - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.NewGuid(), - State = ReferralLeadState.Confirmed, - EmailHash = "email@mail.com", - PhoneCountryCodeId = 354, - PhoneNumberHash = "0881212838", - ConfirmationToken = "9l2l7a4lk" - }, - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.NewGuid(), - State = ReferralLeadState.Confirmed, - EmailHash = "email@mail.com", - PhoneCountryCodeId = 359, - PhoneNumberHash = "0881212838", - ConfirmationToken = "9l2l7a4lk" - }, - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.NewGuid(), - State = ReferralLeadState.Approved, - EmailHash = "another@yahoo.com", - PhoneCountryCodeId = 359, - PhoneNumberHash = "0884543421", - ConfirmationToken = "7a00a3a8p" - }, - new ReferralLeadEntity - { - Id = Guid.NewGuid(), - AgentId = Guid.NewGuid(), - State = ReferralLeadState.Approved, - EmailHash = "another-one@yahoo.com", - PhoneCountryCodeId = 359, - PhoneNumberHash = "0884543421", - ConfirmationToken = "1b9yhklj3" - } - }); - context.SaveChanges(); - } - } -} diff --git a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/PropertyPurchaseRepositoryTests.cs b/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/PropertyPurchaseRepositoryTests.cs deleted file mode 100644 index fff13d4..0000000 --- a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/PropertyPurchaseRepositoryTests.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Threading.Tasks; -using Lykke.Common.MsSql; -using MAVN.Service.Referral.MsSqlRepositories; -using MAVN.Service.Referral.MsSqlRepositories.Repositories; -using MAVN.Service.Referral.Tests.MsSqlRepositories.Fixtures; -using Xunit; - -namespace MAVN.Service.Referral.Tests.MsSqlRepositories -{ - public class PropertyPurchaseRepositoryTests : IClassFixture - { - private readonly PropertyPurchaseRepository _propertyPurchaseRepository; - - public PropertyPurchaseRepositoryTests() - { - var contextFixture = new PropertyPurchaseRepositoryFixture(); - - var bonusEngineContext = contextFixture.ReferralContext; - - var msSqlContextFactory = new SqlContextFactoryFake(c => bonusEngineContext); - - _propertyPurchaseRepository = new PropertyPurchaseRepository( - msSqlContextFactory, MapperHelper.CreateAutoMapper()); - } - - [Fact] - public async Task GetsAll() - { - //Act - var allEntities = await _propertyPurchaseRepository.GetAsync(); - - //Assert - Assert.Equal(3, allEntities.Count); - } - } -} diff --git a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/ReferralLeadRepositoryTests.cs b/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/ReferralLeadRepositoryTests.cs deleted file mode 100644 index 4aa9513..0000000 --- a/tests/MAVN.Service.Referral.Tests/MsSqlRepositories/ReferralLeadRepositoryTests.cs +++ /dev/null @@ -1,129 +0,0 @@ -using System; -using System.Threading.Tasks; -using Lykke.Common.MsSql; -using MAVN.Service.Referral.MsSqlRepositories; -using MAVN.Service.Referral.MsSqlRepositories.Entities; -using MAVN.Service.Referral.MsSqlRepositories.Repositories; -using MAVN.Service.Referral.Tests.MsSqlRepositories.Fixtures; -using Xunit; - -namespace MAVN.Service.Referral.Tests.MsSqlRepositories -{ - public class ReferralLeadRepositoryTests : IClassFixture - { - private readonly ReferralLeadRepository _referralLeadRepository; - - public ReferralLeadRepositoryTests() - { - var contextFixture = new ReferralLeadRepositoryFixture(); - - var bonusEngineContext = contextFixture.ReferralContext; - - var msSqlContextFactory = new SqlContextFactoryFake(c => bonusEngineContext); - - _referralLeadRepository = new ReferralLeadRepository(msSqlContextFactory, MapperHelper.CreateAutoMapper()); - } - - [Fact] - public async Task GetsByReferId() - { - //Arrange - var referIdGuid = Guid.Parse("57e80137-984c-44f0-ad6f-b555d46cd934"); - - //Act - var entity = await _referralLeadRepository.GetAsync(referIdGuid); - - //Assert - Assert.Equal(referIdGuid, entity.Id); - } - - [Fact] - public async Task GetsAll() - { - //Arrange - var agentId = Guid.Parse("78ceb436-29a9-499c-92fc-ec77152e32d8"); - - //Act - var allEntities = await _referralLeadRepository.GetForReferrerAsync(agentId, null, null); - - //Assert - Assert.Equal(2, allEntities.Count); - } - - [Theory] - [InlineData("57e80137-984c-44f0-ad6f-b555d46cd934", true)] - [InlineData("400484e2-13f1-4bc6-b079-66b25d1b71f6", false)] - public async Task ChecksIfExists(string referId, bool shouldExist) - { - //Arrange - var referIdGuid = Guid.Parse(referId); - - //Act - var exists = await _referralLeadRepository.DoesExistAsync(referIdGuid); - - //Assert - Assert.Equal(shouldExist, exists); - } - - [Theory] - [InlineData("email@mail.com", 3)] - [InlineData("another@yahoo.com", 1)] - [InlineData("notexisting@email.com", 0)] - public async Task GetsByEmail(string email, int count) - { - //Act - var entries = await _referralLeadRepository.GetByEmailHashAsync(email); - - //Assert - Assert.Equal(count, entries.Count); - - foreach (var entry in entries) - Assert.Equal(email, entry.EmailHash); - } - - [Theory] - [InlineData(359, "0884543421", 2)] - [InlineData(359, "0881212838", 1)] - [InlineData(359, "0881215701", 0)] - public async Task GetsByPhone(int countryCodeId, string phone, int count) - { - //Act - var entries = await _referralLeadRepository.GetByPhoneNumberHashAsync(countryCodeId, phone); - - //Assert - Assert.Equal(count, entries.Count); - - foreach (var entry in entries) - Assert.Equal(phone, entry.PhoneNumberHash); - } - - [Theory] - [InlineData("3l2k3h4lk")] - [InlineData("7a00a3a8p")] - [InlineData("1b9yhklj3")] - public async Task GetsByConfirmationToken(string confirmationToken) - { - //Act - var entry = await _referralLeadRepository.GetByConfirmationTokenAsync(confirmationToken); - - //Assert - Assert.Equal(confirmationToken, entry.ConfirmationToken); - } - - [Fact] - public async Task GetsApproved() - { - //Arrange - var expectedCount = 2; - - //Act - var entries = await _referralLeadRepository.GetApprovedAsync(); - - //Assert - Assert.Equal(expectedCount, entries.Count); - - foreach (var entry in entries) - Assert.Equal(ReferralLeadState.Approved.ToString(), entry.State.ToString()); - } - } -}