public async Task <IActionResult> GetHolidaysByDate([FromRoute] Guid token, string countryIsoCode, string date) { CommandResponse commandResponse; Stopwatch watch = Stopwatch.StartNew(); DateTime?holidayDate = date.ToDate(); if (holidayDate == null) { ModelState.AddModelError("date", $"{date} não é uma data válida"); } if (!ModelState.IsValid) { commandResponse = FormatResponse(ModelState); } else { CommandResult commandResult; if (token != _bigaiId) { commandResult = CommandResult.Unauthorized("Authorization token is not valid."); } else { var request = new GetHolidaysByDateRequest() { CountryIsoCode = countryIsoCode, HolidayDate = holidayDate.Value }; commandResult = await _queryHolidaysByDate.GetHolidaysByDateAsync(request); } commandResponse = FormatResponse(commandResult); } watch.Stop(); commandResponse.ElapsedTime = watch.ElapsedMilliseconds; return(StatusCode(commandResponse.StatusCode, commandResponse)); }
public async Task <CommandResult> GetHolidaysByDateAsync(GetHolidaysByDateRequest request) { _commandName = request.GetType().Name; CommandResult commandResult; Stopwatch watch = Stopwatch.StartNew(); try { if (!await CanGetHolidaysByDateAsync(request)) { commandResult = CommandResult.BadRequest("Não foi possível realizar a consulta."); } else { var holidays = await GetHolidaysByDateAsync(request.CountryIsoCode, request.HolidayDate); if (holidays != null && holidays.Count() > 0) { commandResult = CommandResult.Ok($"{holidays.Count()} feriados encontrados."); commandResult.Data = holidays.ToResponse(); } else { commandResult = CommandResult.BadRequest($"Não existe feriado cadastrado para {request.CountryIsoCode} em {request.HolidayDate}."); } } } catch (Exception) { commandResult = CommandResult.InternalServerError($"Ocorreu um erro na busca."); } watch.Stop(); commandResult.ElapsedTime = watch.ElapsedMilliseconds; return(commandResult); }
private async Task <bool> CanGetHolidaysByDateAsync(GetHolidaysByDateRequest request) { return(InstanceNotNull(request) && (await IsValidRequestAsync(_getHolidaysByDateRequestValidator, request))); }