using System; using System.Threading.Tasks; using AutoMapper; using DevHive.Data.Models; using DevHive.Data.Repositories; using DevHive.Services.Models.Language; 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)) throw new ArgumentException("Language already exists!"); Language language = this._languageMapper.Map(languageServiceModel); bool result = await this._languageRepository.AddAsync(language); return result; } public async Task GetLanguageById(Guid id) { Language language = await this._languageRepository.GetByIdAsync(id); if(language == null) throw new ArgumentException("The language does not exist"); return this._languageMapper.Map(language); } public async Task UpdateLanguage(UpdateLanguageServiceModel languageServiceModel) { if (!await this._languageRepository.DoesLanguageExist(languageServiceModel.Id)) throw new ArgumentException("Language does not exist!"); if (await this._languageRepository.DoesLanguageNameExist(languageServiceModel.Name)) throw new ArgumentException("Language name already exists!"); Language language = this._languageMapper.Map(languageServiceModel); //language.Id = languageServiceModel.Id; bool result = await this._languageRepository.EditAsync(language); return result; } public async Task DeleteLanguage(Guid id) { if (!await this._languageRepository.DoesLanguageExist(id)) throw new ArgumentException("Language does not exist!"); Language language = await this._languageRepository.GetByIdAsync(id); bool result = await this._languageRepository.DeleteAsync(language); return result; } } }