139 lines
5.9 KiB
C#
139 lines
5.9 KiB
C#
using EnotaryoPH.Data;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using NsEntities = EnotaryoPH.Data.Entities;
|
|
|
|
namespace EnotaryoPH.Web.Pages.Principal.IdentificationDocument
|
|
{
|
|
public class IdentificationDocumentModel : PageModel
|
|
{
|
|
private readonly ICurrentUserService _currentUserService;
|
|
private readonly NotaryoDBContext _notaryoDBContext;
|
|
private readonly IWebHostEnvironment _webHostEnvironment;
|
|
|
|
public IdentificationDocumentModel(IWebHostEnvironment webHostEnvironment, NotaryoDBContext notaryoDBContext, ICurrentUserService currentUserService)
|
|
{
|
|
_webHostEnvironment = webHostEnvironment;
|
|
_notaryoDBContext = notaryoDBContext;
|
|
_currentUserService = currentUserService;
|
|
}
|
|
|
|
public IActionResult OnGet()
|
|
{
|
|
if (IdentificationDocument_UID != Guid.Empty)
|
|
{
|
|
var user = _notaryoDBContext.Users.AsNoTracking().FirstOrDefault(u => u.User_UID == _currentUserService.GetUser_UID());
|
|
|
|
var document = _notaryoDBContext.IdentificationDocuments.AsNoTracking().FirstOrDefault(d => d.IdentificationDocument_UID == IdentificationDocument_UID && d.UserID == user.UserID);
|
|
if (document == null)
|
|
{
|
|
return NotFound();
|
|
}
|
|
|
|
IdentificationDocument = new Common.Models.IdentificationDocumentModel(document);
|
|
}
|
|
else
|
|
{
|
|
var defaultImageFilename = $"{_webHostEnvironment.WebRootPath}/images/image-white-on-gray-400x300.jpg";
|
|
using var stream = new MemoryStream(System.IO.File.ReadAllBytes(defaultImageFilename));
|
|
var formFile = new FormFile(stream, 0, stream.Length, "Untitled.jpg", "Untitled.jpg");
|
|
IdentificationDocument = new Common.Models.IdentificationDocumentModel
|
|
{
|
|
File = formFile,
|
|
ImageBase64Url = formFile.ToBase64StringUrl()
|
|
};
|
|
}
|
|
LoadIdentificationDocumentTypes();
|
|
return Page();
|
|
}
|
|
|
|
public async Task<IActionResult> OnPostAsync()
|
|
{
|
|
if (!ModelState.IsValid)
|
|
{
|
|
return PostbackPage();
|
|
}
|
|
|
|
if (IdentificationDocument.ExpirationDate <= DateTime.Now)
|
|
{
|
|
ModelState.AddModelError(FullName.Of(IdentificationDocument.ExpirationDate), "Your Identification Document has expired");
|
|
return PostbackPage();
|
|
}
|
|
|
|
if (IdentificationDocument.DateIssued > DateTime.Now)
|
|
{
|
|
ModelState.AddModelError(FullName.Of(IdentificationDocument.DateIssued), "Your Identification Document has not yet been issued");
|
|
return PostbackPage();
|
|
}
|
|
|
|
var user = _notaryoDBContext.Users.AsNoTracking().FirstOrDefault(u => u.User_UID == _currentUserService.GetUser_UID());
|
|
var entity = new NsEntities.IdentificationDocument();
|
|
if (IdentificationDocument_UID != Guid.Empty)
|
|
{
|
|
entity = _notaryoDBContext.IdentificationDocuments.FirstOrDefault(e => e.IdentificationDocument_UID == IdentificationDocument_UID && e.UserID == user.UserID);
|
|
if (entity == null)
|
|
{
|
|
return BadRequest();
|
|
}
|
|
}
|
|
entity.ExpirationDate = IdentificationDocument.ExpirationDate.ToUTC();
|
|
entity.DateIssued = IdentificationDocument.DateIssued.ToUTC();
|
|
entity.PlaceIssued = IdentificationDocument.PlaceIssued;
|
|
entity.IdNumber = IdentificationDocument.IdNumber;
|
|
entity.Type = IdentificationDocument.IdentificationType;
|
|
entity.UploadedOn = DateTime.UtcNow;
|
|
entity.UserID = user.UserID;
|
|
|
|
var file = IdentificationDocument.File;
|
|
var stream = new MemoryStream((int)file.Length);
|
|
file.CopyTo(stream);
|
|
entity.Filename = file.FileName;
|
|
entity.File = stream.ToArray();
|
|
|
|
if (entity.IdentificationDocumentID > 0)
|
|
{
|
|
_notaryoDBContext.Update(entity);
|
|
}
|
|
else
|
|
{
|
|
entity.CreatedOn = DateTime.UtcNow;
|
|
entity.IdentificationDocument_UID = Guid.NewGuid();
|
|
_notaryoDBContext.Add(entity);
|
|
}
|
|
_notaryoDBContext.SaveChanges();
|
|
return RedirectToPage("/Principal/Dashboard/Dashboard");
|
|
}
|
|
|
|
private IActionResult PostbackPage()
|
|
{
|
|
if (IdentificationDocument.File != null)
|
|
{
|
|
IdentificationDocument.ImageBase64Url = IdentificationDocument.File.ToBase64StringUrl();
|
|
//using var stream = IdentificationDocument.File.OpenReadStream();
|
|
//IdentificationDocument.File = new FormFile(stream, 0, stream.Length, IdentificationDocument.File.Name, IdentificationDocument.File.Name);
|
|
}
|
|
|
|
LoadIdentificationDocumentTypes();
|
|
return Page();
|
|
}
|
|
|
|
private void LoadIdentificationDocumentTypes()
|
|
{
|
|
var lookupIdentificationTypes = _notaryoDBContext.LookupData.AsNoTracking().Include(e => e.LookupDataValues).FirstOrDefault(e => e.Name == "Identification Types");
|
|
IdentificationDocument.IdentificationTypes = lookupIdentificationTypes.LookupDataValues
|
|
.ConvertAll(m => new SelectListItem
|
|
{
|
|
Text = m.Title.DefaultIfEmpty(m.Value),
|
|
Value = m.Value
|
|
});
|
|
}
|
|
|
|
[BindProperty]
|
|
public Common.Models.IdentificationDocumentModel IdentificationDocument { get; set; }
|
|
|
|
[BindProperty(SupportsGet = true)]
|
|
public Guid IdentificationDocument_UID { get; set; }
|
|
}
|
|
} |