59 lines
2.4 KiB
C#
59 lines
2.4 KiB
C#
using EnotaryoPH.Data;
|
|
using EnotaryoPH.Web.Common.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
|
|
namespace EnotaryoPH.Web.Pages.Shared.Components.UploadOrChooseIdentificationDocument
|
|
{
|
|
public class UploadOrChooseIdentificationDocumentViewComponent : ViewComponent
|
|
{
|
|
private readonly ICurrentUserService _currentUserService;
|
|
private readonly NotaryoDBContext _notaryoDBContext;
|
|
|
|
public UploadOrChooseIdentificationDocumentViewComponent(NotaryoDBContext notaryoDBContext, ICurrentUserService currentUserService)
|
|
{
|
|
_notaryoDBContext = notaryoDBContext;
|
|
_currentUserService = currentUserService;
|
|
}
|
|
|
|
public async Task<IViewComponentResult> InvokeAsync(Guid transaction_UID)
|
|
{
|
|
var model = new UploadOrChooseIdentificationDocumentModel
|
|
{
|
|
ExistingIdentificationDocuments = [],
|
|
NewIdentificationDocument = new(),
|
|
UploadNewIdentification = true
|
|
};
|
|
var user = _notaryoDBContext.Users.AsNoTracking().FirstOrDefault(u => u.User_UID == _currentUserService.GetUser_UID());
|
|
if (user == null)
|
|
{
|
|
return View(model);
|
|
}
|
|
model.ExistingIdentificationDocuments = GetIdentityDocumentsByUserID(user.UserID);
|
|
model.NewIdentificationDocument = new IdentificationDocumentModel
|
|
{
|
|
IdentificationTypes = GetIdentificationDocumentTypes()
|
|
};
|
|
model.UploadNewIdentification = true;
|
|
|
|
return View(model);
|
|
}
|
|
|
|
private List<SelectListItem> GetIdentificationDocumentTypes()
|
|
{
|
|
var lookupIdentificationTypes = _notaryoDBContext.LookupData.AsNoTracking().Include(e => e.LookupDataValues).FirstOrDefault(e => e.Name == "Identification Types");
|
|
return lookupIdentificationTypes.LookupDataValues
|
|
.ConvertAll(m => new SelectListItem
|
|
{
|
|
Text = m.Title.DefaultIfEmpty(m.Value),
|
|
Value = m.Value
|
|
});
|
|
}
|
|
|
|
private List<IdentificationDocumentModel> GetIdentityDocumentsByUserID(int userID)
|
|
=> _notaryoDBContext.IdentificationDocuments
|
|
.AsNoTracking()
|
|
.Where(d => d.UserID == userID)
|
|
.Select(d => new IdentificationDocumentModel(d)).ToList();
|
|
}
|
|
} |