From 14db95231af5034b26e782f2f2ff04bd4792ff75 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Fri, 18 Dec 2020 09:10:00 +0200 Subject: Added: TechnologyService, Technology Service models, Technology mappings for the service and fixed laguage mappings for the service --- .../Configurations/Mapping/LanguageMappings.cs | 1 + .../Configurations/Mapping/TechnologyMappings.cs | 15 +++++ .../Models/Language/LanguageServiceModel.cs | 2 - .../Models/Technology/TechnologyServiceModel.cs | 7 +++ .../Technology/UpdateTechnologyServiceModel.cs | 9 +++ src/DevHive.Services/Services/LanguageService.cs | 1 - src/DevHive.Services/Services/TechnologyService.cs | 67 ++++++++++++++++++++++ 7 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 src/DevHive.Services/Configurations/Mapping/TechnologyMappings.cs create mode 100644 src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs create mode 100644 src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs create mode 100644 src/DevHive.Services/Services/TechnologyService.cs diff --git a/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs b/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs index 8f83cd9..0be9ca2 100644 --- a/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs +++ b/src/DevHive.Services/Configurations/Mapping/LanguageMappings.cs @@ -9,6 +9,7 @@ namespace DevHive.Services.Configurations.Mapping public LanguageMappings() { CreateMap(); + CreateMap(); } } } \ No newline at end of file diff --git a/src/DevHive.Services/Configurations/Mapping/TechnologyMappings.cs b/src/DevHive.Services/Configurations/Mapping/TechnologyMappings.cs new file mode 100644 index 0000000..6be70d6 --- /dev/null +++ b/src/DevHive.Services/Configurations/Mapping/TechnologyMappings.cs @@ -0,0 +1,15 @@ +using DevHive.Data.Models; +using AutoMapper; +using DevHive.Services.Models.Technology; + +namespace DevHive.Services.Configurations.Mapping +{ + public class TechnologyMappings : Profile + { + public TechnologyMappings() + { + CreateMap(); + CreateMap(); + } + } +} \ No newline at end of file diff --git a/src/DevHive.Services/Models/Language/LanguageServiceModel.cs b/src/DevHive.Services/Models/Language/LanguageServiceModel.cs index 49c82d2..f06ebb6 100644 --- a/src/DevHive.Services/Models/Language/LanguageServiceModel.cs +++ b/src/DevHive.Services/Models/Language/LanguageServiceModel.cs @@ -1,5 +1,3 @@ -using System; - namespace DevHive.Services.Models.Language { public class LanguageServiceModel diff --git a/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs new file mode 100644 index 0000000..6fcc83e --- /dev/null +++ b/src/DevHive.Services/Models/Technology/TechnologyServiceModel.cs @@ -0,0 +1,7 @@ +namespace DevHive.Services.Models.Technology +{ + public class TechnologyServiceModel + { + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs new file mode 100644 index 0000000..e7ee85b --- /dev/null +++ b/src/DevHive.Services/Models/Technology/UpdateTechnologyServiceModel.cs @@ -0,0 +1,9 @@ +using System; + +namespace DevHive.Services.Models.Technology +{ + public class UpdateTechnologyServiceModel : TechnologyServiceModel + { + public Guid Id { get; set; } + } +} \ No newline at end of file diff --git a/src/DevHive.Services/Services/LanguageService.cs b/src/DevHive.Services/Services/LanguageService.cs index 79d77fd..0454aaf 100644 --- a/src/DevHive.Services/Services/LanguageService.cs +++ b/src/DevHive.Services/Services/LanguageService.cs @@ -4,7 +4,6 @@ using AutoMapper; using DevHive.Data.Models; using DevHive.Data.Repositories; using DevHive.Services.Models.Language; -using Microsoft.AspNetCore.Mvc; namespace DevHive.Services.Services { diff --git a/src/DevHive.Services/Services/TechnologyService.cs b/src/DevHive.Services/Services/TechnologyService.cs new file mode 100644 index 0000000..5617e9b --- /dev/null +++ b/src/DevHive.Services/Services/TechnologyService.cs @@ -0,0 +1,67 @@ +using System; +using System.Threading.Tasks; +using AutoMapper; +using DevHive.Data.Models; +using DevHive.Data.Repositories; +using DevHive.Services.Models.Technology; + +namespace DevHive.Services.Services +{ + public class TechnologyService + { + private readonly TechnologyRepository _technologyRepository; + private readonly IMapper _technologyMapper; + + public TechnologyService(DevHiveContext context, IMapper technologyMapper) + { + this._technologyRepository = new TechnologyRepository(context); + this._technologyMapper = technologyMapper; + } + + public async Task Create(TechnologyServiceModel technologyServiceModel) + { + if (!await this._technologyRepository.DoesTechnologyNameExist(technologyServiceModel.Name)) + throw new ArgumentException("Technology already exists!"); + + Technology technology = this._technologyMapper.Map(technologyServiceModel); + bool result = await this._technologyRepository.AddAsync(technology); + + return result; + } + + public async Task GetTechnologyById(Guid id) + { + Technology technology = await this._technologyRepository.GetByIdAsync(id); + + if(technology == null) + throw new ArgumentException("The technology does not exist"); + + return this._technologyMapper.Map(technology); + } + + public async Task UpdateTechnology(UpdateTechnologyServiceModel updateTechnologyServiceModel) + { + if (!await this._technologyRepository.DoesTechnologyExist(updateTechnologyServiceModel.Id)) + throw new ArgumentException("Technology does not exist!"); + + if (!await this._technologyRepository.DoesTechnologyNameExist(updateTechnologyServiceModel.Name)) + throw new ArgumentException("Technology name already exists!"); + + Technology technology = this._technologyMapper.Map(updateTechnologyServiceModel); + bool result = await this._technologyRepository.EditAsync(technology); + + return result; + } + + public async Task DeleteLanguage(Guid id) + { + if (!await this._technologyRepository.DoesTechnologyExist(id)) + throw new ArgumentException("Technology does not exist!"); + + Technology language = await this._technologyRepository.GetByIdAsync(id); + bool result = await this._technologyRepository.DeleteAsync(language); + + return result; + } + } +} \ No newline at end of file -- cgit v1.2.3