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
21 changes: 21 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Deploy to EC2
on:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: SSH and deploy
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_KEY }}
script: |
cd /home/ec2-user/ValuationBackend
git pull
dotnet restore
sudo dotnet publish -c Release -o /var/app
sudo systemctl restart valuation-backend
6 changes: 3 additions & 3 deletions Controllers/ImageDataController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public ImageDataController(AppDbContext context)
[HttpPost]
public IActionResult SendImageData([FromBody] SendImageDataRequest request)
{
if (string.IsNullOrWhiteSpace(request.ReportId) || request.Images == null || !request.Images.Any())
if (request.ReportId <= 0 || request.Images == null || !request.Images.Any())
{
return BadRequest("Missing reportId or images.");
}
Expand All @@ -38,9 +38,9 @@ public IActionResult SendImageData([FromBody] SendImageDataRequest request)

// ✅ 2. Accept actual image files via form-data
[HttpPost("upload")]
public async Task<IActionResult> UploadImages([FromForm] string reportId, [FromForm] List<IFormFile> files)
public async Task<IActionResult> UploadImages([FromForm] int reportId, [FromForm] List<IFormFile> files)
{
if (string.IsNullOrWhiteSpace(reportId) || files == null || !files.Any())
if (reportId <= 0 || files == null || !files.Any())
return BadRequest("Missing reportId or files.");

foreach (var file in files)
Expand Down
16 changes: 8 additions & 8 deletions Controllers/LAMasterfileController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,33 @@ public LAMasterfileController(ILAMasterfileService service)
}

[HttpGet]
public ActionResult<LAMasterfileResponse> GetAll([FromQuery] int pageNumber = 0, [FromQuery] int pageSize = 15)
public ActionResult<LAMasterfileResponse> GetAll([FromQuery] int pageNumber = 0, [FromQuery] int pageSize = 15, [FromQuery] string sortBy = "", [FromQuery] int? assignedToUserId = null)
{
// Adjust pageNumber to be 1-based for internal logic
var page = pageNumber + 1;
return Ok(_service.GetPaged(page, pageSize));
return Ok(_service.GetPaged(page, pageSize, sortBy, assignedToUserId));
}

[HttpGet("paged")]
public ActionResult<LAMasterfileResponse> GetPaged([FromQuery] int page = 1, [FromQuery] int pageSize = 10)
public ActionResult<LAMasterfileResponse> GetPaged([FromQuery] int page = 1, [FromQuery] int pageSize = 10, [FromQuery] string sortBy = "", [FromQuery] int? assignedToUserId = null)
{
return Ok(_service.GetPaged(page, pageSize));
return Ok(_service.GetPaged(page, pageSize, sortBy, assignedToUserId));
}

[HttpPost("search")]
[HttpPost("filter")]
public ActionResult<LAMasterfileResponse> Search([FromBody] LAQueryRequest request)
public ActionResult<LAMasterfileResponse> Search([FromBody] LAQueryRequest request, [FromQuery] string sortBy = "", [FromQuery] int? assignedToUserId = null)
{
var query = request.Query.ToLower();
var response = _service.Search(query);
var response = _service.Search(query, sortBy, assignedToUserId);
return Ok(response);
}

[HttpPost("search/paged")]
public ActionResult<LAMasterfileResponse> SearchPaged([FromBody] LAQueryRequest request, [FromQuery] int page = 1, [FromQuery] int pageSize = 10)
public ActionResult<LAMasterfileResponse> SearchPaged([FromBody] LAQueryRequest request, [FromQuery] int page = 1, [FromQuery] int pageSize = 10, [FromQuery] string sortBy = "", [FromQuery] int? assignedToUserId = null)
{
var query = request.Query.ToLower();
var response = _service.SearchPaged(query, page, pageSize);
var response = _service.SearchPaged(query, page, pageSize, sortBy, assignedToUserId);
return Ok(response);
}
}
Expand Down
3 changes: 2 additions & 1 deletion Controllers/ProfileController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public IActionResult GetUserProfile([FromBody] UserProfileRequest request)
empEmail = user.EmpEmail,
empId = user.EmpId,
position = user.Position,
assignedDivision = user.AssignedDivision
assignedDivision = user.AssignedDivision,
profilePicture = user.ProfilePicture != null ? Convert.ToBase64String(user.ProfilePicture) : null
});
}
}
Expand Down
43 changes: 43 additions & 0 deletions Controllers/UserProfileController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using ValuationBackend.Data;

namespace ValuationBackend.Controllers
{
public class ProfilePictureUploadDto
{
public int UserId { get; set; }
public IFormFile Image { get; set; }
}

[ApiController]
[Route("api/[controller]")]
public class UserProfileController : ControllerBase
{
private readonly AppDbContext _context;

public UserProfileController(AppDbContext context)
{
_context = context;
}

[HttpPost("upload-profile-picture")]
public async Task<IActionResult> UploadProfilePicture([FromForm] ProfilePictureUploadDto dto)
{
if (dto.Image == null || dto.Image.Length == 0)
return BadRequest("No image uploaded.");

var user = await _context.Users.FirstOrDefaultAsync(u => u.Id == dto.UserId);
if (user == null)
return NotFound("User not found.");

using var ms = new MemoryStream();
await dto.Image.CopyToAsync(ms);
user.ProfilePicture = ms.ToArray();

await _context.SaveChangesAsync();

return Ok("Profile picture updated.");
}
}
}
2 changes: 1 addition & 1 deletion Data/DBInitializer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public static void Initialize(AppDbContext context)
UpdateUserTaskUserIds(context);

// Remove UserTasks that are not LM (Land Miscellaneous)
RemoveNonLMUserTasks(context);
// RemoveNonLMUserTasks(context);

// Initialize Master Data
InitializeMasterData(context); // Initialize Land Aquisition Master Files
Expand Down
Loading