public IActionResult PostCdbInput(CdbInput cdbInput) { IList <Error> error = _iCdbOutputService.Validate(cdbInput); if (error.Count == 0) { _context.CdbInput.Add(cdbInput); _context.SaveChangesAsync(); _cdbOutput = _iCdbOutputService.GetResult(); return(CreatedAtAction(nameof(GetCdbOutput), _cdbOutput)); } else { return(BadRequest(error)); } }
/// <summary> /// Validates api input data /// </summary> /// <param name="cdbInput"></param> /// <returns></returns> public IList <Error> Validate(CdbInput cdbInput) { IEnumerable <CdbInput> cdbInputList = new CdbInput[] { cdbInput }; List <Error> errorList = new List <Error>(); DateTime minDateCsv, maxDateCsv; _smallCsv = OptimizeData(cdbInputList, GetData(_file)); _cdbInput = cdbInput; if (_smallCsv.Count() == 0) { errorList.Add(new Error() { fields = new String[] { "currentDate", "investmentDate" }, message = "Desculpe, mas as datas informadas não estão presentes em nossas bases de dados." }); return(errorList); } if (cdbInput.currentDate > DateTime.Now) { errorList.Add(new Error() { fields = new String[] { "currentDate" }, message = $"Desculpe, mas não podemos prever o valor do resgate na data de {cdbInput.currentDate.ToShortDateString()}." }); return(errorList); } if (cdbInput.investmentDate > DateTime.Now) { errorList.Add(new Error() { fields = new String[] { "investmentDate" }, message = $"Desculpe, mas você ainda não realizou o seu investimento, correto?! Por favor, verifique a data de investimento." }); return(errorList); } if (cdbInput.currentDate < cdbInput.investmentDate) { errorList.Add(new Error() { fields = new String[] { "investmentDate" }, message = $"A data de resgate não pode ser menor do que a data de investimento." }); return(errorList); } if (cdbInput.cdbRate <= 0) { errorList.Add(new Error() { fields = new String[] { "cdbRate" }, message = "Taxa cdb inválida" }); } minDateCsv = _smallCsv.Select(x => x.dtDate).Min(); if (cdbInput.investmentDate < minDateCsv) { errorList.Add(new Error() { fields = new String[] { "investmentDate" }, message = $"Por favor, insira um valor maior do que este. A menor data de investimento presente em nossas bases é {minDateCsv.ToShortDateString()}." }); } maxDateCsv = _smallCsv.Select(x => x.dtDate).Max(); if (cdbInput.currentDate > maxDateCsv) { errorList.Add(new Error() { fields = new String[] { "currentDate" }, message = $"Por favor, insira um valor menor do que este. A maior data de resgate presente em nossas bases é {maxDateCsv.ToShortDateString()}." }); } return(errorList); }