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(); var userID = (Guid)securityProvider.GetSecurity().UserId; var requestQuery = objectSpace.GetObjectsQuery() .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 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.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(); } } }