public async Task <IActionResult> GenerateReturnToken([FromBody] GenerateReturnTokenDto generateReturnTokenDto) { var result = await _returnTokenGenerator.GenerateToken(generateReturnTokenDto); return(StatusCode(result)); }
public async Task <IActionResult> GenerateReturnToken([FromBody] GenerateReturnTokenDto generateReturnTokenDto) { if (generateReturnTokenDto is null || generateReturnTokenDto.RegistrationId.IsNullOrEmpty()) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.NULL", Message = "Please provide valid data", StatusCode = System.Net.HttpStatusCode.BadRequest })); } if (!Guid.TryParse(generateReturnTokenDto.RegistrationId, out var guidRegistrationId)) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.INVALID.ID", Message = "Please provide valid data", StatusCode = System.Net.HttpStatusCode.BadRequest })); } var registration = (from r in _registrationsRepo.Table where r.ObjectRegistrationId == guidRegistrationId select r) .Include(r => r.ObjectReceiving) .ThenInclude(r => r.ObjectReturning) .Include(r => r.Object) .FirstOrDefault(); if (registration is null || registration.Status == ObjectRegistrationStatus.Canceled) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.INVALID.ID", Message = "Please provide valid data", StatusCode = System.Net.HttpStatusCode.BadRequest })); } //if (!registration.Object.ShouldReturn) //{ // return new ErrorMessage // { // ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.FREE.OBJECT", // Message = "The Object now is yours, you don't have to return it", // StatusCode = System.Net.HttpStatusCode.BadRequest // }.ToCommand<GenerateReturnTokenResultDto>(); //} if (!_authorizer.IsAuthorized(or => or.ObjectRegistrationId == guidRegistrationId, or => or.RecipientLogin.User)) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.UNAUTHORIZED", Message = "You are not authorized to execute this request", StatusCode = System.Net.HttpStatusCode.BadRequest })); } if (registration.ObjectReceiving is null) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.NOT.RECEIVED", Message = "The object has not been received yet", StatusCode = System.Net.HttpStatusCode.BadRequest })); } if (registration.ObjectReceiving.ObjectReturning is object) { return(StatusCode(new ErrorMessage { ErrorCode = "TRANSACTION.TOKEN.GENERATE.RETURN.ALREADY.RETURNED", Message = "The object has been returned", StatusCode = System.Net.HttpStatusCode.BadRequest })); } var token = await _tokenManager.GenerateToken(registration.ObjectReceiving.ObjectReceivingId, TokenType.Returning); return(Ok(new GenerateReturnTokenResultDto { CreatedAtUtc = token.IssuedAtUtc, UseBeforeUtc = token.UseBeforeUtc, ReturnToken = token.Token })); }