Exemplo n.º 1
0
        public async Task <Response> PostVale(
            string urlBase,
            string servicePrefix,
            string controller,
            CreateValeRequest request)
        {
            try
            {
                string        requestString = JsonConvert.SerializeObject(request);
                StringContent content       = new StringContent(requestString, Encoding.UTF8, "application/json");
                HttpClient    client        = new HttpClient
                {
                    BaseAddress = new Uri(urlBase)
                };

                string url = $"{servicePrefix}{controller}";
                HttpResponseMessage response = await client.PostAsync(url, content);

                string result = await response.Content.ReadAsStringAsync();

                if (!response.IsSuccessStatusCode)
                {
                    return(new Response
                    {
                        IsSuccess = false,
                        Message = result,
                    });
                }

                return(new Response
                {
                    IsSuccess = true,
                    Result = "exitoso"
                });
            }
            catch (Exception ex)
            {
                return(new Response
                {
                    IsSuccess = false,
                    Message = ex.Message
                });
            }
        }
        public async Task <IActionResult> PostVale([FromBody] CreateValeRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            request.FechaCreacion = DateTime.UtcNow;

            EmpresaEntity empresa = _context.Empresa.Where(e => e.id == request.EmpresaId).FirstOrDefault();

            if (empresa == null)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "La empresa especificada no existe."
                }));
            }

            ClienteEntity cliente = _context.Cliente.Where(c => c.id == request.ClienteId).FirstOrDefault();

            if (cliente == null)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "El cliente especificado no existe."
                }));
            }

            DistribuidorEntity dist = _context.Distribuidor.Where(d => d.id == request.DistId).FirstOrDefault();

            if (dist == null)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "El distribuidor especificado no existe."
                }));
            }

            TaloneraEntity talonera = _context.Talonera.Where(t => t.id == request.TaloneraId).FirstOrDefault();

            if (talonera == null)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "La talonera especificada no existe."
                }));
            }

            // evalua que el folio del vale ingresado este dentro del rango de la talonera a la que pertenece

            if (talonera == null ||
                request.NumeroFolio < talonera.RangoInicio || request.NumeroFolio > talonera.RangoFin)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "Folio fuera de rango."
                }));
            }

            ValeEntity valeValidacion = _context.Vale
                                        .Where(v => v.Talonera.id == talonera.id && v.NumeroFolio == request.NumeroFolio)
                                        .FirstOrDefault();

            // evalua que el folio del vale ingresado no se repita dentro de la talonera a la que pertenece

            if (valeValidacion != null)
            {
                return(BadRequest(new Response
                {
                    IsSuccess = false,
                    Message = "Folio repetido."
                }));
            }

            ValeEntity valeInsert = new ValeEntity
            {
                Monto           = request.Monto,
                CantidadPagos   = request.CantidadPagos,
                NumeroFolio     = request.NumeroFolio,
                FechaCreacion   = request.FechaCreacion,
                FechaPrimerPago = request.FechaPrimerPago,
                Distribuidor    = dist,
                Cliente         = cliente,
                Empresa         = empresa,
                Talonera        = talonera,
                status_vale     = "Activo"
            };

            _context.Vale.Add(valeInsert);

            await _context.SaveChangesAsync();

            float    division = valeInsert.Monto / valeInsert.CantidadPagos;
            DateTime Fecha    = valeInsert.FechaPrimerPago;


            for (int i = 0; i < valeInsert.CantidadPagos; i++)
            {
                _context.Pago.Add(new PagoEntity
                {
                    Cantidad     = division,
                    FechaLimite  = Fecha,
                    Vale         = valeInsert,
                    Distribuidor = dist
                });
                //ENERO
                if (Fecha.Month == 1 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 1 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 1 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //FEBRERO
                else if (Fecha.Month == 2 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 2 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 2 && Fecha.Day == 28)
                {
                    Fecha = Fecha.AddDays(15);
                }

                //MARZO
                else if (Fecha.Month == 3 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 3 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 3 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //ABRIL
                else if (Fecha.Month == 4 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 4 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 4 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(15);
                }

                //MAYO
                else if (Fecha.Month == 5 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 5 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 5 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //JUNIO
                else if (Fecha.Month == 6 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 6 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 6 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(15);
                }

                //JULIO
                else if (Fecha.Month == 7 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 7 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 7 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //AGOSTO
                else if (Fecha.Month == 8 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 8 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 8 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //SEPTIEMBRE
                else if (Fecha.Month == 9 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 9 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 9 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(15);
                }

                //OCTUBRE
                else if (Fecha.Month == 10 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 10 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 10 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }

                //NOVIEMBRE
                else if (Fecha.Month == 11 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 11 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 11 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(15);
                }
                //DICIEMBRE
                else if (Fecha.Month == 12 && Fecha.Day == 1)
                {
                    Fecha = Fecha.AddDays(14);
                }
                else if (Fecha.Month == 12 && Fecha.Day == 15)
                {
                    Fecha = Fecha.AddDays(15);
                }
                else if (Fecha.Month == 12 && Fecha.Day == 30)
                {
                    Fecha = Fecha.AddDays(16);
                }
                //Fecha = Fecha.AddDays(15);
            }

            await _context.SaveChangesAsync();

            return(NoContent());
        }