can we create this using service pattern ?
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;
using System.Reflection;
using System.Security.Claims;
using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using PortalHomeAPI.Models;
namespace PortalHomeAPI.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class HomeController : ControllerBase
{
private readonly ILogger<HomeController> _logger;
private readonly IConfiguration _configuration;
private readonly PortalDataContext _db;
public HomeController(ILogger<HomeController> logger, IConfiguration configuration, PortalDataContext db)
{
_logger = logger;
_configuration = configuration;
_db = db;
}
//[Authorize(Roles = "test")]
[HttpGet("Index")]
public ActionResult<CKEditorModel> Index()
{
UserDetailsModel objuser = GetUserDetails();
CKEditorModel obj = _db.Notification.OrderByDescending(x => x.Id).FirstOrDefault();
if (obj != null)
{
TimeSpan span = DateTime.Now.Subtract(Convert.ToDateTime(obj.ExpirationDate));
if (span.TotalMinutes >= 0)
obj = new CKEditorModel();
}
else
{
obj = new CKEditorModel();
}
return Ok(obj);
}
private UserDetailsModel GetUserDetails()
{
UserDetailsModel obj = new UserDetailsModel();
string UserName = "default@berkleyenvironmental.com";
if (User?.Identity?.IsAuthenticated ?? false)
{
var identity = User.Identity as System.Security.Claims.ClaimsIdentity;
var claims = identity.Claims.ToLookup(x => x.Type);
UserName = identity.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email)?.Value;
}
obj.UserName = UserName;
return obj;
}
}
}