96 lines
3.3 KiB
C#
96 lines
3.3 KiB
C#
using DevExpress.ExpressApp.Security;
|
|
using DevExpress.ExpressApp.WebApi.Services;
|
|
using DurnyklyYol.Blazor.Server.DTO;
|
|
using DurnyklyYol.Module.BusinessObjects;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Swashbuckle.AspNetCore.Annotations;
|
|
|
|
namespace DurnyklyYol.Blazor.Server.Controllers
|
|
{
|
|
[Route("api/[controller]")]
|
|
[ApiController]
|
|
[Authorize]
|
|
public class RequestController : ControllerBase
|
|
{
|
|
private readonly IDataService dataService;
|
|
private readonly ISecurityProvider securityProvider;
|
|
|
|
public RequestController(IDataService dataService, ISecurityProvider securityProvider)
|
|
{
|
|
this.dataService = dataService;
|
|
this.securityProvider = securityProvider;
|
|
}
|
|
|
|
[Authorize]
|
|
[HttpGet]
|
|
public IActionResult Get([FromQuery] int pageNumber = 1, [FromQuery] int pageSize = 10)
|
|
{
|
|
var objectSpace = dataService.GetObjectSpace<CargoRequest>();
|
|
var userID = (Guid)securityProvider.GetSecurity().UserId;
|
|
|
|
var requestQuery = objectSpace.GetObjectsQuery<CargoRequest>()
|
|
.Where(cl => cl.Client.Oid == userID);
|
|
|
|
var totalRecords = requestQuery.Count();
|
|
|
|
var requests = requestQuery
|
|
.Skip((pageNumber - 1) * pageSize)
|
|
.Take(pageSize)
|
|
.ToList();
|
|
|
|
var response = new
|
|
{
|
|
TotalRecords = totalRecords,
|
|
PageNumber = pageNumber,
|
|
PageSize = pageSize,
|
|
Data = requests
|
|
};
|
|
|
|
return Ok(response);
|
|
}
|
|
|
|
|
|
[HttpPost]
|
|
[SwaggerOperation("Register client cargo request")]
|
|
[ProducesResponseType(StatusCodes.Status201Created)] // Success response
|
|
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(string))]
|
|
[ProducesResponseType(StatusCodes.Status500InternalServerError, Type = typeof(string))]
|
|
public async Task<IActionResult> Create([FromForm] RequestDto requstDto)
|
|
{
|
|
// Validate input
|
|
if (!ModelState.IsValid)
|
|
{
|
|
return BadRequest(ModelState);
|
|
}
|
|
|
|
// Check if securityProvider is null
|
|
if (securityProvider == null || dataService == null)
|
|
{
|
|
return StatusCode(500, "Data service or Security provider is not available");
|
|
}
|
|
|
|
var strategy = (SecurityStrategy)securityProvider.GetSecurity();
|
|
var user = (Client)strategy.User;
|
|
|
|
if (user == null || !strategy.CanWrite(typeof(Client)))
|
|
return BadRequest("You do not have permissions to update a client!");
|
|
|
|
var objectSpace = dataService.GetObjectSpace(typeof(Client));
|
|
var client = objectSpace.GetObject(user);
|
|
|
|
var cargoRequest = objectSpace.CreateObject<CargoRequest>();
|
|
cargoRequest.Client = client;
|
|
cargoRequest.CreatedAt = DateTime.Now;
|
|
cargoRequest.Description = requstDto.Description;
|
|
cargoRequest.From = requstDto.From;
|
|
cargoRequest.To = requstDto.To;
|
|
cargoRequest.GoodsType = requstDto.GoodsType;
|
|
//cargoRequest.Save();
|
|
objectSpace.CommitChanges();
|
|
|
|
return Created();
|
|
}
|
|
}
|
|
}
|