Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions DataAccess/InstitutionRequestDAO.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,15 @@ public IQueryable<InstitutionRequest> AllInstitutionRequests()
#region Get Institution Request By ID
public async Task<InstitutionRequest> GetInstitutionRequestByID(int requestId)
{
var institutionRequest = await db.InstitutionRequests.FirstOrDefaultAsync(r => r.InstitutionRequestId == requestId);
return institutionRequest;
try
{
var institutionRequest = await db.InstitutionRequests.FirstOrDefaultAsync(r => r.InstitutionRequestId == requestId);
return institutionRequest;
}
catch (Exception ex)
{
throw;
}
}
#endregion

Expand Down
39 changes: 15 additions & 24 deletions LostFound_API/Controllers/InstitutionRequestController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
using LostFound_API.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Caching.Memory;
using Newtonsoft.Json.Linq;
using ObjectBusiness;
using Repository;
using Services;
using SignalRLayer;
using System.Security.Claims;
using System.Text.Json;
using System.Threading.Tasks;
Expand All @@ -28,6 +30,7 @@ public class InstitutionRequestController : ControllerBase
private readonly StateService stateService;
private readonly IMemoryCache memoryCache;
private readonly IConfiguration configuration;
private readonly IHubContext<SystemHub> hubContext;
private readonly EmailSender emailSender;
private readonly IHttpClientFactory httpClientFactory;
#endregion
Expand All @@ -40,7 +43,8 @@ public InstitutionRequestController(IInstitutionRequestRepository institutionReq
IUsersRepository usersRepository,
EmailSender emailSender,
IMemoryCache memoryCache,
IInstitutionRepository institutionRepository)
IInstitutionRepository institutionRepository,
IHubContext<SystemHub> hubContext)
{
this.institutionRequestRepository = institutionRequestRepository;
this.stateService = stateService;
Expand All @@ -50,6 +54,7 @@ public InstitutionRequestController(IInstitutionRequestRepository institutionReq
this.emailSender = emailSender;
this.memoryCache = memoryCache;
this.institutionRepository = institutionRepository;
this.hubContext = hubContext;
}
#endregion

Expand Down Expand Up @@ -208,7 +213,7 @@ Thank you! Your work email has been successfully verified.

<p>
Your institution registration request for
<strong>{institutionRequest.InstitutionName}</strong>
<strong>{institutionRequest.InstitutionName}'s {institutionRequest.InstitutionAddress} campus</strong>
has now been submitted for review.
</p>

Expand Down Expand Up @@ -272,6 +277,8 @@ public async Task<ActionResult> VerifyWebsite(int id)
{
institutionRequest.IsVerifiedWebsite = true;
institutionRequest.WebsiteVerifiedAt = DateTime.Now;
institutionRequest.ReviewedDate = DateTime.Now;
institutionRequest.ReviewedBy = "System Admin"; // Can replace this with the actual admin's name if available later
var isUpdated = await institutionRequestRepository.UpdateInstitutionRequest();
if (isUpdated)
{
Expand Down Expand Up @@ -608,7 +615,7 @@ No further action is required at this time.
#region Approve Request
// PUT api/<InstitutionRequestController>/5
[Authorize(Roles = "SystemAdmin")]
[HttpPut("approve/{id}")]
[HttpPost("approve/{id}")]
public async Task<ActionResult> ApproveRequest(int id)
{
// Get the authenticated user's email from the claims
Expand All @@ -635,6 +642,7 @@ public async Task<ActionResult> ApproveRequest(int id)
// Update information
var institutionRequest = await institutionRequestRepository.GetInstitutionRequestByID(id);
institutionRequest.Status = StatusRequestInstitution.Approved;
institutionRequest.IsVerifiedInstitution = true;
institutionRequest.UpdatedDate = DateTime.Now;

var isUpdated = await institutionRequestRepository.UpdateInstitutionRequest();
Expand All @@ -646,23 +654,6 @@ public async Task<ActionResult> ApproveRequest(int id)
});
}

var institution = new Institution
{
InstitutionName = institutionRequest.InstitutionName,
InstitutionAddress = institutionRequest.InstitutionAddress,
CreatedDate = DateTime.Now,
UpdatedDate = DateTime.Now
};

var isAdded = await institutionRepository.CreateInstitution(institution);
if (!isAdded)
{
return BadRequest(new
{
message = "Create institution failed"
});
}

// Send email notification to the user who made the request
var token = Guid.NewGuid().ToString();
memoryCache.Set($"EMAIL_VERIFY_{token}", institutionRequest.WorkEmail, TimeSpan.FromMinutes(15));
Expand Down Expand Up @@ -751,7 +742,7 @@ public async Task<ActionResult> ApproveRequest(int id)

<p>
Congratulations! Your institution
<strong>{institutionRequest.InstitutionName}</strong>
<strong>{institutionRequest.InstitutionName}'s {institutionRequest.InstitutionAddress} campus</strong>
has been successfully approved by the <strong>Back2Me Team</strong>.
</p>

Expand Down Expand Up @@ -801,7 +792,7 @@ Set Your Password

return Ok(new
{
message = "Update request successfully"
message = "Approve request successfully"
});
}
#endregion
Expand Down Expand Up @@ -834,7 +825,7 @@ public async Task<ActionResult> RejectRequest(int id, [FromBody] string rejectRe

// Update information
var institutionRequest = await institutionRequestRepository.GetInstitutionRequestByID(id);
institutionRequest.Status = StatusRequestInstitution.Rejected;
institutionRequest.Status = StatusRequestInstitution.Declined;
institutionRequest.RejectReason = rejectReason;
institutionRequest.ReviewedBy = userExisted.FirstName + " " + userExisted.LastName;
institutionRequest.ReviewedDate = DateTime.Now;
Expand Down Expand Up @@ -954,7 +945,7 @@ public async Task<ActionResult> RejectRequest(int id, [FromBody] string rejectRe

<p>
Thank you for your interest in registering
<strong>{institution.InstitutionName}</strong>
<strong>{institution.InstitutionName}'s {institution.InstitutionAddress} campus</strong>
with <strong>Back2Me</strong>.
</p>

Expand Down
4 changes: 2 additions & 2 deletions LostFound_API/Controllers/PostController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ public async Task<ActionResult<List<object>>> AllLostPostCodes()
#region My Posts
[Authorize]
[HttpGet("my-posts")]
public async Task<ActionResult<List<Posts>>> GetAllPostsByUserId()
public async Task<ActionResult<List<Posts>>> MyPosts()
{
var userEmail = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

Expand Down Expand Up @@ -214,7 +214,7 @@ public async Task<ActionResult<List<Posts>>> GetAllPostsByUserId()
}
#endregion

#region My Posts
#region User Posts
[Authorize(Roles = "SystemAdmin")]
[HttpGet("user-posts/{userId}")]
public async Task<ActionResult<List<Posts>>> GetAllPostsByUserId(int userId)
Expand Down
2 changes: 1 addition & 1 deletion ObjectBusiness/StatusRequestInstitution.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ public enum StatusRequestInstitution
{
Pending,
Approved,
Rejected,
Declined,
}
}
Loading