using Asp.Versioning; using Google.Api; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using OnlineSalesAutoCrop.CoreAPI.Models; using OnlineSalesAutoCrop.CoreAPI.Models.Global; using OnlineSalesAutoCrop.CoreAPI.Models.Requests.MobileApp; using OnlineSalesAutoCrop.CoreAPI.Models.Responses; using OnlineSalesAutoCrop.CoreAPI.Models.Responses.MobileApp; using OnlineSalesAutoCrop.CoreAPI.Services.Contracts.MobileApp; using System; using System.Threading.Tasks; namespace OnlineSalesAutoCrop.CoreAPI.Controllers.Mobile; /// /// /// /// /// /// /// /// /// /// [Authorize] [ApiController] [ApiVersion("1.0")] [ValidateAntiForgeryToken] [Route("api/mobile/v{version:apiVersion}/orders")] public class OrdersController(IOrderService service, IOptions appSettings, IEaseCache cache, ILogger logger) : ControllerBase { private readonly ILogger _logger = logger; private readonly IEaseCache _cache = cache; private readonly IOrderService _service = service; private readonly AppSettings _appSettings = appSettings?.Value; private readonly DateTimeOffset _options = Helper.CreateEaseCacheOptions(); /// /// Login using your credential data retrieve from SqlServer /// /// /// /// /// If login successful Return Attendance List [HttpPost("SaveOrder")] [IgnoreAntiforgeryToken] [ProducesResponseType(StatusCodes.Status200OK, Type = typeof(SaveOrderResponse))] public async Task UpsertAttendance([FromBody] SaveOrderRequest request) { SaveOrderResponse response = new(); try { int userId = HttpContext.User.GetClaimValue(Constants.UserId); response = await _service.SaveOrderAsync(request, userId); return Ok(MobileResponseBase.Success(response)); } catch (Exception ex) { string msg = $"Exception occur on Save Orders endpoint with Order UUID request - {request?.UUID}"; _logger.LogError(exception: ex, message: msg); return StatusCode(StatusCodes.Status500InternalServerError, MobileResponseBase.Failure(ex.InnerException != null ? ex.InnerException.Message : ex.Message, StatusCodes.Status500InternalServerError)); } } }