using Microsoft.EntityFrameworkCore; using RMuseum.DbContext; using RMuseum.Models.Diwan; using RMuseum.Models.Diwan.ViewModels; using RSecurityBackend.Models.Generic; using RSecurityBackend.Services.Implementation; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace RMuseum.Services.Implementation { /// /// translation service implementation /// public class DiwanTranslationService : IDiwanTranslationService { /// /// add language /// /// /// public async Task> AddLanguageAsync(DiwanLanguage lang) { lang.Name = lang.Name == null ? lang.Name : lang.Name.Trim(); lang.Code = lang.Code == null ? lang.Code : lang.Code.Trim(); if (string.IsNullOrEmpty(lang.Name) || string.IsNullOrEmpty(lang.Code)) return new RServiceResult(null, "ورود کد و نام زبان اجباری است."); if (string.IsNullOrEmpty(lang.NativeName)) lang.NativeName = lang.Name; var existing = await _context.DiwanLanguages.Where(l => l.Name == lang.Name || l.Code == lang.Code).FirstOrDefaultAsync(); if (existing != null) return new RServiceResult(null, "اطلاعات تکراری است."); try { _context.DiwanLanguages.Add(lang); await _context.SaveChangesAsync(); return new RServiceResult(lang); } catch (Exception exp) { return new RServiceResult(null, exp.ToString()); } } /// /// update an existing language /// /// /// public async Task> UpdateLangaugeAsync(DiwanLanguage updated) { try { var lang = await _context.DiwanLanguages.Where(l => l.Id == updated.Id).SingleOrDefaultAsync(); if (lang == null) return new RServiceResult(false, "اطلاعات زبان یافت نشد."); lang.Name = updated.Name; lang.RightToLeft = updated.RightToLeft; lang.Code = updated.Code; lang.NativeName = updated.NativeName; lang.Description = updated.Description; _context.Update(lang); await _context.SaveChangesAsync(); return new RServiceResult(true); } catch (Exception exp) { return new RServiceResult(false, exp.ToString()); } } /// /// delete language /// /// /// public async Task> DeleteLangaugeAsync(int id) { try { var lang = await _context.DiwanLanguages.Where(l => l.Id == id).SingleOrDefaultAsync(); if (lang == null) return new RServiceResult(false, "اطلاعات زبان یافت نشد."); _context.Remove(lang); await _context.SaveChangesAsync(); return new RServiceResult(true); } catch (Exception exp) { return new RServiceResult(false, exp.ToString()); } } /// /// get langauge by id /// /// /// public async Task> GetLanguageAsync(int id) { try { return new RServiceResult(await _context.DiwanLanguages.Where(l => l.Id == id).SingleOrDefaultAsync()); } catch (Exception exp) { return new RServiceResult(null, exp.ToString()); } } /// /// get all languages /// /// public async Task> GetLanguagesAsync() { try { return new RServiceResult(await _context.DiwanLanguages.OrderBy(l => l.Id).ToArrayAsync()); } catch (Exception exp) { return new RServiceResult(null, exp.ToString()); } } /// /// Database Context /// protected readonly RMuseumDbContext _context; /// /// constructor /// /// public DiwanTranslationService(RMuseumDbContext context) { _context = context; } } }