예제 #1
0
        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));
            }
        }
예제 #2
0
        /// <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);
        }