예제 #1
0
        public async Task <IActionResult> Post([FromBody] Reserva r)
        {
            if (!ConexionOracle.Activa)
            {
                ConexionOracle.Open();
                if (!ConexionOracle.Activa)
                {
                    return(StatusCode(504, ConexionOracle.NoConResponse));
                }
            }
            Procedimiento p = new Procedimiento(ConexionOracle.Conexion, "SP_ID_RESERVA");

            p.Parametros.Add("id_reserva", OracleDbType.Int32, ParameterDirection.Output);
            await p.Ejecutar();

            int idf = Convert.ToInt32((decimal)(OracleDecimal)(p.Parametros["id_reserva"].Value));

            r.Multa_pagado = 0;
            r.Multa_total  = 0;
            r.Id_reserva   = idf;
            r.Valor_pagado = 0;
            r.Fecha        = DateTime.Now;
            r.Id_estado    = 1;
            if (await cmd.Insert(r, false))
            {
                return(Ok(r));
            }
            return(BadRequest());
        }
        public async Task <IActionResult> Auth([FromHeader(Name = "User-Agent")] String userAgent, [FromBody] Usuario usuario)
        {
            if (!ConexionOracle.Activa)
            {
                ConexionOracle.Open();
                if (!ConexionOracle.Activa)
                {
                    return(StatusCode(504, ConexionOracle.NoConResponse));
                }
            }
            var    p         = new Procedimiento(ConexionOracle.Conexion, "SP_AUTENTICAR");
            int    resultado = 3;
            String msg       = "";

            p.Parametros.Add("usr", OracleDbType.Varchar2, usuario.Username, ParameterDirection.Input);
            p.Parametros.Add("pwd", OracleDbType.Varchar2, Tools.Encriptar(usuario.Clave), ParameterDirection.Input);
            p.Parametros.Add("rol", OracleDbType.Int32, ParameterDirection.Output);
            p.Parametros.Add("resultado", OracleDbType.Int32, resultado, ParameterDirection.Output);
            p.Parametros.Add("msg", OracleDbType.Varchar2, msg, ParameterDirection.Output);
            try
            {
                await p.Ejecutar();

                resultado = Convert.ToInt32((decimal)(OracleDecimal)(p.Parametros["resultado"].Value));
                switch (resultado)
                {
                case 0:    //Usuario no existe.
                    return(BadRequest(new { error = "Usuario no existe." }));

                case 1:    //Contraseña incorrecta.
                    return(BadRequest(new { error = "Contraseña incorrecta." }));

                case 2:    //Inicio exitoso.
                    usuario = await cmd.Get <Usuario>(usuario.Username);

                    Persona persona = await cmd.Get <Persona>(usuario.Rut);

                    if (userAgent.Equals("TurismoRealDesktop"))
                    {
                        if (usuario.Id_rol > 1)
                        {
                            return(StatusCode(401, new { Error = "Acceso Denegado." }));
                        }
                    }
                    return(Ok(SesionsManager.Sesiones.Registrar(Tools.GenerarToken(usuario, persona))));

                default:
                    return(StatusCode(502));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(StatusCode(500, new { error = e, msg = p.Parametros["msg"].Value.ToString() }));
            }
            //return StatusCode(418);
        }
예제 #3
0
        public async Task <IActionResult> Post([FromBody] Transaccion t)
        {
            if (!ConexionOracle.Activa)
            {
                ConexionOracle.Open();
                if (!ConexionOracle.Activa)
                {
                    return(StatusCode(504, ConexionOracle.NoConResponse));
                }
            }
            try
            {
                Procedimiento p = new Procedimiento(ConexionOracle.Conexion, "SP_ID_PAGO");
                p.Parametros.Add("id_pago", OracleDbType.Int32, ParameterDirection.Output);
                await p.Ejecutar();

                int    idf  = Convert.ToInt32((decimal)(OracleDecimal)(p.Parametros["id_pago"].Value));
                String trId = "TTR" + idf.ToString();
                t.Id_pago = trId;
                t.Fecha   = DateTime.Now;
                if (t.Id_medio == 1)
                {
                    /* ZONA KHIPU */
                    Khipu.Client.Configuration.ReceiverId = Secret.T_RESEIVER_ID;
                    Khipu.Client.Configuration.Secret     = Secret.T_SECRET_KEY;
                    PaymentsApi            pago     = new PaymentsApi();
                    PaymentsCreateResponse response = pago.PaymentsPost(t.Comentario, "CLP", t.Monto, transactionId: trId,
                                                                        returnUrl: ServerURLs.PagarUrl(Accion.repay, t.Id_reserva, trId),
                                                                        cancelUrl: ServerURLs.PagarUrl(Accion.cancel, t.Id_reserva, trId, t.Monto));
                    /**/
                    t.Listo = '1';
                    var r = await cmd.Get <Reserva>(t.Id_reserva);

                    if (r == null)
                    {
                        return(BadRequest(MensajeError.Nuevo("Reserva no existe.")));
                    }
                    r.Valor_pagado += Convert.ToInt32(t.Monto);
                    r.N_pago        = r.N_pago + 1;
                    if (r.Valor_pagado == r.Valor_total)
                    {
                        r.Id_estado = 3;
                    }
                    else if (r.Valor_pagado == Math.Round((double)(r.Valor_total / 2), 0, MidpointRounding.AwayFromZero))
                    {
                        r.Id_estado = 2;
                    }
                    else
                    {
                        r.Id_estado = 1;
                    }
                    await cmd.Update(r);

                    var list = await cmd.Find <Reserva>("Username", t.Username);

                    List <Reserva> rl = new List <Reserva>();
                    foreach (var res in list)
                    {
                        if (res.Id_estado == 3 || res.Id_estado == 4)
                        {
                            rl.Add(res);
                        }
                    }
                    if (rl.Count > 9)
                    {
                        var u = await cmd.Get <Usuario>(t.Username);

                        u.Frecuente = '1';
                        await cmd.Update(u);
                    }
                    if (await cmd.Insert(t, false))
                    {
                        return(Ok(response));
                    }
                }
                else
                {/*
                  * var trs = new Webpay(Transbank.Webpay.Configuration.ForTestingWebpayPlusNormal()).NormalTransaction;
                  * var initResult = trs.initTransaction(t.Monto,trId,"sesion-"+trId, ServerURLs.PagarUrl(Acccion.pay, t.Id_reserva, trId, t.Monto), ServerURLs.PagarUrl(Acccion.commit, t.Id_reserva, trId, t.Monto));
                  * var token = initResult.token;
                  * t.Token = token;
                  * var url = initResult.url;
                  * if (await cmd.Insert(t, false))
                  * {
                  *     return Ok(new { Token = token, Url = url });
                  * }*/
                }
                return(BadRequest());
            }
            catch (Exception e)
            {
                return(StatusCode(500, MensajeError.Nuevo(e.Message)));
            }
        }
예제 #4
0
        public async Task <IActionResult> Post([FromForm] List <IFormFile> imagenes, [FromRoute] int id_depto)
        {
            if (!ConexionOracle.Activa)
            {
                ConexionOracle.Open();
                if (!ConexionOracle.Activa)
                {
                    return(StatusCode(504, ConexionOracle.NoConResponse));
                }
            }
            Departamento depto = await cmd.Get <Departamento>(id_depto);

            Localidad localidad = await cmd.Get <Localidad>(depto.Id_localidad);

            List <Foto>   listaFotos = new List <Foto>();
            Foto          f;
            Procedimiento p = new Procedimiento(ConexionOracle.Conexion, "SP_ID_FOTO");

            p.Parametros.Add("id_foto", OracleDbType.Int32, ParameterDirection.Output);//id_depto
            String rutaBase = Secret.RUTA_RAIZ;

            try
            {
                if (imagenes.Count > 0)
                {
                    foreach (var foto in imagenes)
                    {
                        await p.Ejecutar();

                        int    idf     = Convert.ToInt32((decimal)(OracleDecimal)(p.Parametros["id_foto"].Value));
                        String subruta = "img\\" + Tools.ToUrlCompatible(localidad.Nombre.ToLower()) + "\\" + Tools.ToUrlCompatible(depto.Nombre.ToLower()) + "\\" + Tools.ToUrlCompatible(depto.Nombre.Replace(" ", "_")).ToUpper() + "_" + idf.ToString() + Path.GetExtension(foto.FileName);
                        using (var stream = System.IO.File.Create(rutaBase + subruta))
                        {
                            await foto.CopyToAsync(stream);
                        }
                        f = new Foto
                        {
                            Id_foto  = idf,
                            Ruta     = ("http://turismoreal.xyz/" + subruta).Replace("\\", "/"),
                            Id_depto = depto.Id_depto
                        };
                        listaFotos.Add(f);
                    }
                    int cont = 0;
                    foreach (var item in listaFotos)
                    {
                        if (await cmd.Insert(item, false))
                        {
                            cont++;
                        }
                    }
                    if (cont == 1)
                    {
                        return(Ok(new { Mensaje = "La Imagen fue subida exitosamente." }));
                    }
                    else if (cont > 0)
                    {
                        return(Ok(new { Mensaje = cont.ToString() + " Imagenes fueron subidas exitosamente." }));
                    }
                    else
                    {
                        return(BadRequest(new { Error = "No fue posible subir la(s) imagen(es)." }));
                    }
                }
                else
                {
                    return(BadRequest(new { Error = "No se recibieron imagenes." }));
                }
            }
            catch (Exception e)
            {
                return(StatusCode(500, new { Error = e.Message }));
            }
        }