Add language repository & controller

This commit is contained in:
hishamco 2021-01-10 20:09:04 +03:00
parent 047fa9ac4e
commit aa19a35834
6 changed files with 132 additions and 1 deletions

View File

@ -0,0 +1,52 @@
using System.Collections.Generic;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Oqtane.Enums;
using Oqtane.Infrastructure;
using Oqtane.Models;
using Oqtane.Repository;
using Oqtane.Shared;
namespace Oqtane.Controllers
{
[Route(ControllerRoutes.Default)]
public class LanguageController : Controller
{
private readonly ILanguageRepository _languages;
private readonly ILogManager _logger;
public LanguageController(ILanguageRepository language, ILogManager logger)
{
_languages = roles;
_logger = language;
}
[HttpGet]
[Authorize(Roles = RoleNames.Registered)]
public IEnumerable<Language> Get(string siteid) => _languages.GetLanguages(int.Parse(siteid));
[HttpGet("{id}")]
[Authorize(Roles = RoleNames.Registered)]
public Language Get(int id) => _languages.GetLanguage(id);
[HttpPost]
[Authorize(Roles = RoleNames.Admin)]
public Language Post([FromBody] Language language)
{
if (ModelState.IsValid)
{
language = _languages.AddLanguage(language);
_logger.Log(LogLevel.Information, this, LogFunction.Create, "Language Added {Language}", role);
}
return role;
}
[HttpDelete("{id}")]
[Authorize(Roles = RoleNames.Admin)]
public void Delete(int id)
{
_languages.DeleteLanguage(id);
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "Language Deleted {LanguageId}", id);
}
}
}

View File

@ -1,4 +1,4 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
@ -21,6 +21,8 @@ namespace Oqtane.Repository
public virtual DbSet<Folder> Folder { get; set; }
public virtual DbSet<File> File { get; set; }
public virtual DbSet<Language> Languages { get; set; }
public TenantDBContext(ITenantResolver tenantResolver, IHttpContextAccessor accessor) : base(tenantResolver, accessor)
{
// DBContextBase handles multi-tenant database connections

View File

@ -0,0 +1,16 @@
using System.Collections.Generic;
using Oqtane.Models;
namespace Oqtane.Repository
{
public interface ILanguageRepository
{
IEnumerable<Language> GetLanguages(int siteId);
Language AddLanguage(Language language);
Language GetLanguage(int languageId);
void DeleteLanguage(int languageId);
}
}

View File

@ -0,0 +1,35 @@
using System.Collections.Generic;
using System.Linq;
using Oqtane.Models;
namespace Oqtane.Repository
{
public class LanguageRepository : ILanguageRepository
{
private TenantDBContext _db;
public LanguageRepository(TenantDBContext context)
{
_db = context;
}
public IEnumerable<Language> GetLanguages(int siteId) => _db.Languages.Where(l => l.SiteId == siteId);
public Language AddLanguage(Language language)
{
_db.Languages.Add(language);
_db.SaveChanges();
return language;
}
public Language GetLanguage(int languageId) => _db.Languages.Find(languageId);
public void DeleteLanguage(int languageId)
{
var language = _db.Languages.Find(languageId);
_db.Languages.Remove(language);
_db.SaveChanges();
}
}
}

View File

@ -213,6 +213,7 @@ namespace Oqtane
services.AddTransient<ISiteTemplateRepository, SiteTemplateRepository>();
services.AddTransient<ISqlRepository, SqlRepository>();
services.AddTransient<IUpgradeManager, UpgradeManager>();
services.AddTransient<ILanguageRepository, LanguageRepository>();
// load the external assemblies into the app domain, install services
services.AddOqtane(_runtime, _supportedCultures);

View File

@ -0,0 +1,25 @@
using System;
namespace Oqtane.Models
{
public class Language : IAuditable
{
public int LanguageId { get; set; }
public int? SiteId { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public bool IsCurrent { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedOn { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifiedOn { get; set; }
}
}