From 07432b27c31ea3d85175cbeace6645e51cdceeb7 Mon Sep 17 00:00:00 2001 From: DilmurodDeveloper Date: Wed, 23 Jul 2025 18:44:20 +0500 Subject: [PATCH] PROCESSINGS: Add ExternalPerson, Person, and Pet services --- .../ExternalPersonOrchestrationService.cs | 14 ++++++++-- .../PersonPetOrchestrationService.cs | 27 +++++++++++++++---- .../ExternalPersonProcessingService.cs | 27 +++++++++++++++++++ .../IExternalPersonProcessingService.cs | 14 ++++++++++ .../Persons/IPersonProcessingService.cs | 14 ++++++++++ .../Persons/PersonProcessingService.cs | 22 +++++++++++++++ .../Processings/Pets/IPetProcessingService.cs | 14 ++++++++++ .../Processings/Pets/PetProcessingService.cs | 22 +++++++++++++++ 8 files changed, 147 insertions(+), 7 deletions(-) create mode 100644 xChanger.Api/Services/Processings/ExternalPersons/ExternalPersonProcessingService.cs create mode 100644 xChanger.Api/Services/Processings/ExternalPersons/IExternalPersonProcessingService.cs create mode 100644 xChanger.Api/Services/Processings/Persons/IPersonProcessingService.cs create mode 100644 xChanger.Api/Services/Processings/Persons/PersonProcessingService.cs create mode 100644 xChanger.Api/Services/Processings/Pets/IPetProcessingService.cs create mode 100644 xChanger.Api/Services/Processings/Pets/PetProcessingService.cs diff --git a/xChanger.Api/Services/Orchestrations/ExternalPersons/ExternalPersonOrchestrationService.cs b/xChanger.Api/Services/Orchestrations/ExternalPersons/ExternalPersonOrchestrationService.cs index 33ca9a0..2ccd0c6 100644 --- a/xChanger.Api/Services/Orchestrations/ExternalPersons/ExternalPersonOrchestrationService.cs +++ b/xChanger.Api/Services/Orchestrations/ExternalPersons/ExternalPersonOrchestrationService.cs @@ -6,6 +6,7 @@ using xChanger.Api.Models.Foundations.ExternalPersons; using xChanger.Api.Services.Foundations.ExternalPersons; using xChanger.Api.Services.Orchestrations.PersonPets; +using xChanger.Api.Services.Processings.ExternalPersons; namespace xChanger.Api.Services.Orchestrations.ExternalPersons { @@ -13,13 +14,17 @@ public class ExternalPersonOrchestrationService : IExternalPersonOrchestrationSe { private readonly IExternalPersonService externalPersonService; private readonly IPersonPetOrchestrationService personPetOrchestrationService; + private readonly IExternalPersonProcessingService externalPersonProcessingService; + public ExternalPersonOrchestrationService( IExternalPersonService externalPersonService, - IPersonPetOrchestrationService personPetOrchestrationService) + IPersonPetOrchestrationService personPetOrchestrationService, + IExternalPersonProcessingService externalPersonProcessingService) { this.externalPersonService = externalPersonService; this.personPetOrchestrationService = personPetOrchestrationService; + this.externalPersonProcessingService = externalPersonProcessingService; } public async ValueTask ProcessAllExternalPersonsAsync() @@ -27,11 +32,16 @@ public async ValueTask ProcessAllExternalPersonsAsync() List externalPersons = await this.externalPersonService.RetrieveAllExternalPersonsAsync(); - foreach (ExternalPerson externalPerson in externalPersons) + List cleanedExternalPersons = externalPersons + .Select(ep => this.externalPersonProcessingService.ProcessExternalPerson(ep)) + .ToList(); + + foreach (ExternalPerson externalPerson in cleanedExternalPersons) { await this.personPetOrchestrationService.ProcessExternalPersonAsync(externalPerson); } } + } } diff --git a/xChanger.Api/Services/Orchestrations/PersonPets/PersonPetOrchestrationService.cs b/xChanger.Api/Services/Orchestrations/PersonPets/PersonPetOrchestrationService.cs index 5e92897..b125831 100644 --- a/xChanger.Api/Services/Orchestrations/PersonPets/PersonPetOrchestrationService.cs +++ b/xChanger.Api/Services/Orchestrations/PersonPets/PersonPetOrchestrationService.cs @@ -8,6 +8,9 @@ using xChanger.Api.Models.Foundations.Pets; using xChanger.Api.Services.Foundations.Persons; using xChanger.Api.Services.Foundations.Pets; +using xChanger.Api.Services.Processings.ExternalPersons; +using xChanger.Api.Services.Processings.Persons; +using xChanger.Api.Services.Processings.Pets; namespace xChanger.Api.Services.Orchestrations.PersonPets { @@ -15,25 +18,39 @@ public class PersonPetOrchestrationService : IPersonPetOrchestrationService { private readonly IPersonService personService; private readonly IPetService petService; + private readonly IExternalPersonProcessingService externalPersonProcessingService; + private readonly IPersonProcessingService personProcessingService; + private readonly IPetProcessingService petProcessingService; public PersonPetOrchestrationService( IPersonService personService, - IPetService petService) + IPetService petService, + IExternalPersonProcessingService externalPersonProcessingService, + IPersonProcessingService personProcessingService, + IPetProcessingService petProcessingService) { this.personService = personService; this.petService = petService; + this.externalPersonProcessingService = externalPersonProcessingService; + this.personProcessingService = personProcessingService; + this.petProcessingService = petProcessingService; } + public async ValueTask ProcessExternalPersonAsync(ExternalPerson externalPerson) { - Person person = MapToPerson(externalPerson); - Person addedPerson = await this.personService.AddPersonAsync(person); + ExternalPerson cleanedExternalPerson = + this.externalPersonProcessingService.ProcessExternalPerson(externalPerson); - IEnumerable pets = MapToPets(externalPerson, addedPerson.Id); + Person person = MapToPerson(cleanedExternalPerson); + person = this.personProcessingService.ProcessPerson(person); + Person addedPerson = await this.personService.AddPersonAsync(person); + IEnumerable pets = MapToPets(cleanedExternalPerson, addedPerson.Id); foreach (Pet pet in pets) { - await this.petService.AddPetAsync(pet); + Pet cleanedPet = this.petProcessingService.ProcessPet(pet); + await this.petService.AddPetAsync(cleanedPet); } } diff --git a/xChanger.Api/Services/Processings/ExternalPersons/ExternalPersonProcessingService.cs b/xChanger.Api/Services/Processings/ExternalPersons/ExternalPersonProcessingService.cs new file mode 100644 index 0000000..8bb4eb9 --- /dev/null +++ b/xChanger.Api/Services/Processings/ExternalPersons/ExternalPersonProcessingService.cs @@ -0,0 +1,27 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.ExternalPersons; + +namespace xChanger.Api.Services.Processings.ExternalPersons +{ + public class ExternalPersonProcessingService : IExternalPersonProcessingService + { + public ExternalPerson ProcessExternalPerson(ExternalPerson externalPerson) + { + return new ExternalPerson + { + PersonName = externalPerson.PersonName, + Age = externalPerson.Age, + PetOne = externalPerson.PetOne?.Trim().Replace("-", string.Empty), + PetOneType = externalPerson.PetOneType?.Trim().Replace("-", string.Empty), + PetTwo = externalPerson.PetTwo?.Trim().Replace("-", string.Empty), + PetTwoType = externalPerson.PetTwoType?.Trim().Replace("-", string.Empty), + PetThree = externalPerson.PetThree?.Trim().Replace("-", string.Empty), + PetThreeType = externalPerson.PetThreeType?.Trim().Replace("-", string.Empty) + }; + } + } +} diff --git a/xChanger.Api/Services/Processings/ExternalPersons/IExternalPersonProcessingService.cs b/xChanger.Api/Services/Processings/ExternalPersons/IExternalPersonProcessingService.cs new file mode 100644 index 0000000..44cdfde --- /dev/null +++ b/xChanger.Api/Services/Processings/ExternalPersons/IExternalPersonProcessingService.cs @@ -0,0 +1,14 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.ExternalPersons; + +namespace xChanger.Api.Services.Processings.ExternalPersons +{ + public interface IExternalPersonProcessingService + { + ExternalPerson ProcessExternalPerson(ExternalPerson externalPerson); + } +} diff --git a/xChanger.Api/Services/Processings/Persons/IPersonProcessingService.cs b/xChanger.Api/Services/Processings/Persons/IPersonProcessingService.cs new file mode 100644 index 0000000..431a0c0 --- /dev/null +++ b/xChanger.Api/Services/Processings/Persons/IPersonProcessingService.cs @@ -0,0 +1,14 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.Persons; + +namespace xChanger.Api.Services.Processings.Persons +{ + public interface IPersonProcessingService + { + Person ProcessPerson(Person person); + } +} diff --git a/xChanger.Api/Services/Processings/Persons/PersonProcessingService.cs b/xChanger.Api/Services/Processings/Persons/PersonProcessingService.cs new file mode 100644 index 0000000..c4b9c12 --- /dev/null +++ b/xChanger.Api/Services/Processings/Persons/PersonProcessingService.cs @@ -0,0 +1,22 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.Persons; + +namespace xChanger.Api.Services.Processings.Persons +{ + public class PersonProcessingService : IPersonProcessingService + { + public Person ProcessPerson(Person person) + { + return new Person + { + Id = person.Id, + Name = person.Name?.Trim(), + Age = person.Age + }; + } + } +} diff --git a/xChanger.Api/Services/Processings/Pets/IPetProcessingService.cs b/xChanger.Api/Services/Processings/Pets/IPetProcessingService.cs new file mode 100644 index 0000000..85bb911 --- /dev/null +++ b/xChanger.Api/Services/Processings/Pets/IPetProcessingService.cs @@ -0,0 +1,14 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.Pets; + +namespace xChanger.Api.Services.Processings.Pets +{ + public interface IPetProcessingService + { + Pet ProcessPet(Pet pet); + } +} diff --git a/xChanger.Api/Services/Processings/Pets/PetProcessingService.cs b/xChanger.Api/Services/Processings/Pets/PetProcessingService.cs new file mode 100644 index 0000000..a5b367a --- /dev/null +++ b/xChanger.Api/Services/Processings/Pets/PetProcessingService.cs @@ -0,0 +1,22 @@ +//- - - - - - - - - - - - - - - - - - - - - - - - - - +// Copyright (c) Coalition of Good-Hearted Engineers +// Free to Use for Precise File Conversion +//- - - - - - - - - - - - - - - - - - - - - - - - - - + +using xChanger.Api.Models.Foundations.Pets; + +namespace xChanger.Api.Services.Processings.Pets +{ + public class PetProcessingService : IPetProcessingService + { + public Pet ProcessPet(Pet pet) + { + return new Pet + { + Id = pet.Id, + Name = pet.Name?.Trim(), + Type = pet.Type + }; + } + } +}