From 13c74f612f392630d162746f939cf99b208ca4c2 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Tue, 15 Dec 2020 21:28:34 +0200 Subject: Adding LanguageService and updating LanguageRepository --- .../Repositories/LanguageRepository.cs | 18 +++++- src/DevHive.Services/Services/LanguageService.cs | 69 ++++++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 src/DevHive.Services/Services/LanguageService.cs (limited to 'src') diff --git a/src/DevHive.Data/Repositories/LanguageRepository.cs b/src/DevHive.Data/Repositories/LanguageRepository.cs index 26d0d61..add0b8c 100644 --- a/src/DevHive.Data/Repositories/LanguageRepository.cs +++ b/src/DevHive.Data/Repositories/LanguageRepository.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Threading.Tasks; using Data.Models.Interfaces.Database; using DevHive.Data.Models; @@ -35,6 +33,22 @@ namespace DevHive.Data.Repositories .FindAsync(id); } + public async Task DoesLanguageNameExist(string languageName) + { + return await this._context + .Set() + .AsNoTracking() + .AnyAsync(r => r.Name == languageName); + } + + public async Task DoesLanguageExist(Guid id) + { + return await this._context + .Set() + .AsNoTracking() + .AnyAsync(r => r.Id == id); + } + //Update public async Task EditAsync(Language newEntity) { diff --git a/src/DevHive.Services/Services/LanguageService.cs b/src/DevHive.Services/Services/LanguageService.cs new file mode 100644 index 0000000..f57a2a8 --- /dev/null +++ b/src/DevHive.Services/Services/LanguageService.cs @@ -0,0 +1,69 @@ +using System; +using System.Threading.Tasks; +using AutoMapper; +using DevHive.Data.Models; +using DevHive.Data.Repositories; +using DevHive.Services.Models.Language; +using Microsoft.AspNetCore.Mvc; + +namespace DevHive.Services.Services +{ + public class LanguageService + { + private readonly LanguageRepository _languageRepository; + private readonly IMapper _languageMapper; + + public LanguageService(DevHiveContext context, IMapper mapper) + { + this._languageRepository = new LanguageRepository(context); + this._languageMapper = mapper; + } + + public async Task CreateLanguage(LanguageServiceModel languageServiceModel) + { + if (!await this._languageRepository.DoesLanguageNameExist(languageServiceModel.Name)) + return new BadRequestObjectResult("Language already exists!"); + + Language language = this._languageMapper.Map(languageServiceModel); + + await this._languageRepository.AddAsync(language); + + return new CreatedResult("CreateLanguage", language); + } + + public async Task GetLanguageByID(Guid id) + { + Language language = await this._languageRepository.GetByIdAsync(id); + + if(language == null) + return new NotFoundObjectResult("The language does not exist"); + + return new ObjectResult(language); + } + + public async Task UpdateLanguage(LanguageServiceModel languageServiceModel) + { + if (!await this._languageRepository.DoesLanguageExist(languageServiceModel.Id)) + return new NotFoundObjectResult("Language does not exist!"); + + if (!await this._languageRepository.DoesLanguageNameExist(languageServiceModel.Name)) + return new BadRequestObjectResult("Language name already exists!"); + + Language language = this._languageMapper.Map(languageServiceModel); + await this._languageRepository.EditAsync(language); + + return new AcceptedResult("UpdateLanguage", language); + } + + public async Task DeleteLanguage(Guid id) + { + if (!await this._languageRepository.DoesLanguageExist(id)) + return new NotFoundObjectResult("Language does not exist!"); + + Language language = await this._languageRepository.GetByIdAsync(id); + await this._languageRepository.DeleteAsync(language); + + return new OkResult(); + } + } +} \ No newline at end of file -- cgit v1.2.3