From 7da749777e3b693f0bc26eeecd50176324bc2569 Mon Sep 17 00:00:00 2001 From: jojo aquino Date: Tue, 25 Feb 2025 21:25:22 +0000 Subject: [PATCH] fix BaseTakeSelfiePageModel --- .../Pages/BaseTakeSelfiePageModel.cs | 105 +++++++++--------- 1 file changed, 55 insertions(+), 50 deletions(-) diff --git a/EnotaryoPH/EnotaryoPH.Web/Pages/BaseTakeSelfiePageModel.cs b/EnotaryoPH/EnotaryoPH.Web/Pages/BaseTakeSelfiePageModel.cs index c645287..c65d16d 100644 --- a/EnotaryoPH/EnotaryoPH.Web/Pages/BaseTakeSelfiePageModel.cs +++ b/EnotaryoPH/EnotaryoPH.Web/Pages/BaseTakeSelfiePageModel.cs @@ -11,9 +11,11 @@ namespace EnotaryoPH.Web.Pages public class BaseTakeSelfiePageModel : PageModel { protected readonly NotaryoDBContext _notaryoDBContext; - private readonly ICurrentUserService _currentUserService; private readonly ICompreFaceClient _compreFaceClient; private readonly IConfiguration _configuration; + private readonly ICurrentUserService _currentUserService; + private Transaction _transactionEntity; + private User _user; public BaseTakeSelfiePageModel(NotaryoDBContext notaryoDBContext, ICurrentUserService currentUserService, ICompreFaceClient compreFaceClient, IConfiguration configuration) { @@ -26,15 +28,22 @@ namespace EnotaryoPH.Web.Pages protected async Task PostAsync() { var selfieImage = Convert.FromBase64String(SelfieBase64Image.Split(",")[1]) ?? []; - var identificationDocument = _notaryoDBContext.IdentificationDocuments.First(e => e.UserID == UserID); + var identificationDocument = _notaryoDBContext.IdentificationDocuments.First(e => e.UserID == CurrentUser.UserID); var faceMatches = await VerifySelfieAsync(selfieImage, identificationDocument); var isMatchSuccess = faceMatches.Any(); if (isMatchSuccess) { - var signatory = _notaryoDBContext.TransactionSignatories.First(x => x.UserID == UserID); - signatory.Status = nameof(SignatoryStatus.FaceMatch); - _notaryoDBContext.Update(signatory); + var signatory = _notaryoDBContext.TransactionSignatories.FirstOrDefault(x => x.UserID == CurrentUser.UserID); + if (signatory != null) + { + signatory.Status = nameof(SignatoryStatus.FaceMatch); + _notaryoDBContext.Update(signatory); + } + else if (!_user.Role.IsInList(nameof(UserType.Principal), nameof(UserType.SuperUser), nameof(UserType.Administrator))) + { + return false; + } var selfieEntity = CreateOrUpdateSelfie(selfieImage); if (_notaryoDBContext.Entry(selfieEntity).State == EntityState.Detached) @@ -50,32 +59,26 @@ namespace EnotaryoPH.Web.Pages return isMatchSuccess; } - private Transaction _transactionEntity; - - private int TransactionID + private TransactionSelfie CreateOrUpdateSelfie(byte[] selfieImage) { - get + TransactionSelfie selfieEntity; + if (TransactionSelfie_UID == Guid.Empty) { - if (_transactionEntity == null) + selfieEntity = new TransactionSelfie { - _transactionEntity = _notaryoDBContext.Transactions.AsNoTracking().First(x => x.Transaction_UID == Transaction_UID); - } - return _transactionEntity?.TransactionID ?? 0; + CreatedOn = DateTime.UtcNow, + TransactionSelfie_UID = Guid.CreateVersion7(DateTime.UtcNow), + UserID = CurrentUser.UserID, + TransactionID = TransactionID + }; + TransactionSelfie_UID = selfieEntity.TransactionSelfie_UID.Value; } - } - - private User _user; - - private int UserID - { - get + else { - if (_user == null) - { - _user = _notaryoDBContext.Users.AsNoTracking().First(x => x.User_UID == _currentUserService.GetUser_UID()); - } - return _user?.UserID ?? 0; + selfieEntity = _notaryoDBContext.TransactionSelfies.FirstOrDefault(e => e.TransactionSelfie_UID == TransactionSelfie_UID); } + selfieEntity.File = Convert.FromBase64String(SelfieBase64Image.Split(",")[1]); + return selfieEntity; } private async Task> VerifySelfieAsync(byte[] selfieImage, IdentificationDocument identificationDocument) @@ -103,35 +106,37 @@ namespace EnotaryoPH.Web.Pages return faceMatches; } - private TransactionSelfie CreateOrUpdateSelfie(byte[] selfieImage) - { - TransactionSelfie selfieEntity; - if (TransactionSelfie_UID == Guid.Empty) - { - selfieEntity = new TransactionSelfie - { - CreatedOn = DateTime.UtcNow, - TransactionSelfie_UID = Guid.CreateVersion7(DateTime.UtcNow), - UserID = UserID, - TransactionID = TransactionID - }; - TransactionSelfie_UID = selfieEntity.TransactionSelfie_UID.Value; - } - else - { - selfieEntity = _notaryoDBContext.TransactionSelfies.FirstOrDefault(e => e.TransactionSelfie_UID == TransactionSelfie_UID); - } - selfieEntity.File = Convert.FromBase64String(SelfieBase64Image.Split(",")[1]); - return selfieEntity; - } - - [BindProperty(SupportsGet = true)] - public Guid Transaction_UID { get; set; } - [BindProperty] public string SelfieBase64Image { get; set; } + [BindProperty(SupportsGet = true)] + public Guid Transaction_UID { get; set; } + [BindProperty(SupportsGet = true)] public Guid TransactionSelfie_UID { get; set; } + + private User CurrentUser + { + get + { + if (_user == null) + { + _user = _notaryoDBContext.Users.AsNoTracking().First(x => x.User_UID == _currentUserService.GetUser_UID()); + } + return _user ?? new(); + } + } + + private int TransactionID + { + get + { + if (_transactionEntity == null) + { + _transactionEntity = _notaryoDBContext.Transactions.AsNoTracking().First(x => x.Transaction_UID == Transaction_UID); + } + return _transactionEntity?.TransactionID ?? 0; + } + } } } \ No newline at end of file