예제 #1
0
        public async Task <object> GetInicializacion([FromQuery] string guid)
        {
            guid = guid.ToLower();
            var client  = new HttpClient();
            var request = new HttpRequestMessage(HttpMethod.Get, (string)Miscelanea.Configuracion.Get.api + "custom_fields.json");

            request.Headers.Add("Authorization", "Basic YWRtaW46YW51bHZlaGU=");
            var respuesta = await client.SendAsync(request);

            dynamic payloadRespuesta = JObject.Parse(await respuesta.Content.ReadAsStringAsync()).ToObject(typeof(ExpandoObject));
            var     concesionarios   = ((List <dynamic>)((List <dynamic>)payloadRespuesta.custom_fields)
                                        .Find(elem => elem.name == "Agencia").possible_values)
                                       .FindAll(elem => Miscelanea.Util.StringToSha1(elem.value).ToLower().StartsWith(guid))
                                       .Select(elem => (string)elem.value)
                                       .ToList();

            if (concesionarios.Count != 1)
            {
                return(new
                {
                    id_agencia = 0,
                    modulos = (object)null
                });
            }
            var qb  = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            var ids = qb.Table("ma.concesionarios")
                      .Where("nombre", concesionarios[0])
                      .Select("id")
                      .ExecuteListDynamic();

            if (ids.Count != 1)
            {
                return new
                       {
                           id_agencia = 0,
                           modulos    = (object)null
                       }
            }
            ;
            return(new
            {
                id_agencia = ids[0].id,
                nombre_agencia = concesionarios[0],
                modulos = qb.Table("ma.modulos")
                          .Select("id", "categoria", "modulo")
                          .ExecuteListDynamic()
            });
        }
예제 #2
0
        public object CrearSolicitud([FromForm] CrearSolicitudModel payload)
        {
            var qb = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            int id = 0;

            qb.Transaction(trx =>
            {
                id = trx.Table("ma.solicitudes")
                     .Insert(new
                {
                    payload.id_agencia,
                    payload.id_modulo,
                    payload.asunto,
                    payload.descripcion,
                    payload.no_cita,
                    payload.no_orden,
                    payload.no_placas,
                    fecha_registro      = trx.Raw("getutcdate()"),
                    fecha_actualizacion = trx.Raw("getutcdate()"),
                    estado = "abierta"
                }, new string[] { "inserted.id" })
                     .ExecuteListDynamic()[0].id;
                if (payload.evidencias != null)
                {
                    if (!Directory.Exists("wwwroot/img/" + DateTime.UtcNow.ToString("yyyy-MM-dd")))
                    {
                        Directory.CreateDirectory("wwwroot/img/" + DateTime.UtcNow.ToString("yyyy-MM-dd"));
                    }
                    foreach (var elem in payload.evidencias)
                    {
                        var archivo = DateTime.UtcNow.ToString("yyyy-MM-dd") + "/" + Guid.NewGuid().ToString("N") + "." + HeyRed.Mime.MimeTypesMap.GetExtension(elem.ContentType);
                        using (var fs = new FileStream("wwwroot/img/" + archivo, FileMode.Create))
                            elem.CopyTo(fs);
                        trx.Table("ma.evidencias")
                        .Insert(new
                        {
                            id_solicitud = id,
                            ruta         = archivo
                        })
                        .Execute();
                    }
                }
            });
            EnviarEmail(id, Miscelanea.Configuracion.Get.plantillasCorreo.solicitudRegistrada.asunto, Miscelanea.Configuracion.Get.plantillasCorreo.solicitudRegistrada.cuerpo, true);
            EnviarEmail(id, Miscelanea.Configuracion.Get.plantillasCorreo.solicitudRegistradaInterno.asunto, Miscelanea.Configuracion.Get.plantillasCorreo.solicitudRegistradaInterno.cuerpo, false);
            return(null);
        }
예제 #3
0
        public object CrearAsunto([FromForm] CrearAsuntoModel payload)
        {
            var      qb        = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            int      id        = 0;
            DateTime fecha_fin = DateTime.ParseExact(payload.fecha_fin, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);

            qb.Transaction(trx =>
            {
                id = trx.Table("ma.asuntos")
                     .Insert(new
                {
                    payload.id_area,
                    payload.id_departamento,
                    payload.usuario_asignado,
                    payload.usuario_creacion,
                    payload.descripcion,
                    payload.interno_externo,
                    fecha_fin,
                    payload.asunto,
                    fecha_registro      = trx.Raw("getutcdate()"),
                    fecha_actualizacion = trx.Raw("getutcdate()"),
                    estado = "abierta"
                }, new string[] { "inserted.id" })
                     .ExecuteListDynamic()[0].id;
                if (payload.evidencias != null)
                {
                    if (!Directory.Exists("wwwroot/img/" + DateTime.UtcNow.ToString("yyyy-MM-dd")))
                    {
                        Directory.CreateDirectory("wwwroot/img/" + DateTime.UtcNow.ToString("yyyy-MM-dd"));
                    }
                    foreach (var elem in payload.evidencias)
                    {
                        var archivo = DateTime.UtcNow.ToString("yyyy-MM-dd") + "/" + Guid.NewGuid().ToString("N") + "." + HeyRed.Mime.MimeTypesMap.GetExtension(elem.ContentType);
                        using (var fs = new FileStream("wwwroot/img/" + archivo, FileMode.Create))
                            elem.CopyTo(fs);
                        trx.Table("ma.evidencias")
                        .Insert(new
                        {
                            id_solicitud = id,
                            ruta         = archivo
                        })
                        .Execute();
                    }
                }
            });
            return(null);
        }
예제 #4
0
        public object loginConfig([FromQuery] string token)
        {
            var qb         = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            var bitesToken = Convert.FromBase64String(token);
            var strToken   = System.Text.ASCIIEncoding.ASCII.GetString(bitesToken);
            var usuario    = strToken.Split(':')[0];
            var user       = qb.Table("ma.usuario")
                             .Where("usuario", usuario)
                             .Where("token", token)
                             .Select("id", "id_perfil", "id_area", "id_departamento", "nombre", "usuario")
                             .ExecuteListDynamic();

            if (user.Count != 1)
            {
                return new{
                           usuario       = (object)null,
                           usuarios      = (object)null,
                           departamentos = (object)null
                }
            }
            ;
            else
            {
                return new{
                           usuario = user,
                           area    = qb.Table("ma.area")
                                     .Where("id", user[0].id_area)
                                     .Select("id", "nombre")
                                     .ExecuteListDynamic(),
                           usuarios = qb.Table("ma.usuario")
                                      .Where("id_area", user[0].id_area)
                                      .Select("id", "nombre", "id_departamento", "usuario")
                                      .ExecuteListDynamic(),
                           departamentos = qb.Table("ma.departamento")
                                           .Select("id", "nombre")
                                           .ExecuteListDynamic(),
                           areas = qb.Table("ma.area")
                                   .Select("id", "nombre")
                                   .ExecuteListDynamic()
                }
            };
        }
예제 #5
0
        public object ValidarToken([FromQuery] string token)
        {
            var qb         = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            var bitesToken = Convert.FromBase64String(token);
            var strToken   = System.Text.ASCIIEncoding.ASCII.GetString(bitesToken);
            var usuario    = strToken.Split(':')[0];
            var user       = qb.Table("ma.usuario")
                             .Where("usuario", usuario)
                             .Where("token", token)
                             .Select("id")
                             .ExecuteListDynamic();

            if (user.Count != 1)
            {
                return(false);
            }
            else
            {
                return(true);
            }
            /*return null;*/
        }
예제 #6
0
        public object Solicitudes([FromBody] JObject payloadJO)
        {
            dynamic payload      = payloadJO.ToObject(typeof(ExpandoObject));
            var     qb           = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            var     qSolicitudes = qb.Table("ma.solicitudes as s")
                                   .Join("ma.concesionarios as c", "s.id_agencia", "c.id")
                                   .Join("ma.modulos as m", "s.id_modulo", "m.id")
                                   .Join("ma.solicitudes_estados as se", "s.id", "se.id_solicitud")
                                   .LeftJoin("usuarios.v_usuarios as u", "u.usuario", "s.usuario_asignado")
                                   .Select("s.id",
                                           "s.asunto",
                                           "se.estado",
                                           "s.id_agencia",
                                           "c.nombre as nombre_agencia",
                                           "m.id as id_modulo",
                                           "m.categoria as nombre_categoria",
                                           "m.modulo as nombre_modulo",
                                           "s.descripcion",
                                           "s.email",
                                           "s.fecha_registro",
                                           "se.id_peticion_redmine",
                                           "se.fecha_actualizacion",
                                           "s.no_orden",
                                           "s.no_placas",
                                           "s.no_cita",
                                           "s.motivo_cierre",
                                           "s.detalle_cierre",
                                           "s.usuario_asignado",
                                           "u.nombre as nombre_usuario_asignado",
                                           "se.fecha_fin");

            if (((IDictionary <string, object>)payload).ContainsKey("idAgencia") && payload.idAgencia != 0)
            {
                qSolicitudes.Where("s.id_agencia", (object)payload.idAgencia);
            }
            DateTime?fechaInicio = !string.IsNullOrWhiteSpace((string)payload.fechaInicio) ?
                                   DateTime.ParseExact(payload.fechaInicio, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) :
                                   null;
            DateTime?fechaFin = !string.IsNullOrWhiteSpace((string)payload.fechaFin) ?
                                DateTime.ParseExact(payload.fechaFin, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) :
                                null;

            if (fechaInicio == null && fechaFin != null)
            {
                fechaInicio = fechaFin;
                fechaFin    = null;
            }
            if (fechaInicio != null && fechaFin != null)
            {
                qSolicitudes.WhereRaw("cast(?? as date) between ? and ?", "s.fecha_registro", fechaInicio, fechaFin);
            }
            else if (fechaInicio != null && fechaFin == null)
            {
                qSolicitudes.WhereRaw("cast(?? as date) = ?", "s.fecha_registro", fechaInicio);
            }
            else
            {
                qSolicitudes.Limit(100);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.pais))
            {
                qSolicitudes.Where("c.pais", (string)payload.pais);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.marca))
            {
                qSolicitudes.Where("c.marca", (string)payload.marca);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.grupo))
            {
                qSolicitudes.Where("c.grupo", (string)payload.grupo);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.estado))
            {
                qSolicitudes.Where("se.estado", (string)payload.estado);
            }

            var solicitudes = qSolicitudes.ExecuteListDynamic();

            foreach (var solicitud in solicitudes)
            {
                var ds = (IDictionary <string, object>)solicitud;
                ds["contactos"] = qb.Table("ma.concesionarios_contactos")
                                  .Where("id_concesionario", ds["id_agencia"])
                                  .Select("rv", "nombre", "cargo", "telefono", "email")
                                  .ExecuteListDynamic();
                ds["evidencias"] = qb.Table("ma.evidencias")
                                   .Where("id_solicitud", ds["id"])
                                   .Select("id", "ruta")
                                   .ExecuteListDynamic();
            }
            return(new
            {
                solicitudes,
                motivosCierre = db.Table("ma.motivos_cierre")
                                .Select("id", "descripcion")
                                .ExecuteDataTable(),
                usuarios = db.Table("usuarios.v_usuarios")
                           .Select("usuario", "nombre")
                           .ExecuteDataTable()
            });
        }
예제 #7
0
        public object GetSolicitudesPendientes([FromBody] JObject payloadJO)
        {
            dynamic payload = payloadJO.ToObject(typeof(ExpandoObject));
            var     qb      = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);

            var qSolicitudes = qb.Table("ma.solicitudes as s")
                               .Join("ma.concesionarios as c", "s.id_agencia", "c.id")
                               .Join("ma.modulos as m", "s.id_modulo", "m.id")
                               .Join("ma.solicitudes_estados as se", "s.id", "se.id_solicitud")
                               .LeftJoin("usuarios.v_usuarios as u", "u.usuario", "s.usuario_asignado")
                               .Select("s.id",
                                       "s.asunto",
                                       "se.estado",
                                       "s.id_agencia",
                                       "c.nombre as nombre_agencia",
                                       "m.id as id_modulo",
                                       "m.categoria as nombre_categoria",
                                       "m.modulo as nombre_modulo",
                                       "s.descripcion",
                                       "s.email",
                                       "s.fecha_registro",
                                       "se.fecha_actualizacion",
                                       "se.id_peticion_redmine",
                                       "s.no_orden",
                                       "s.no_placas",
                                       "s.no_cita",
                                       "s.motivo_cierre",
                                       "s.detalle_cierre",
                                       "s.usuario_asignado",
                                       "u.nombre as nombre_usuario_asignado",
                                       "se.fecha_fin")
                               .Where("s.estado", "abierta");

            if ((int)payload.idAgencia != 0)
            {
                qSolicitudes.Where("s.id_agencia", payload.idAgencia);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.usuario))
            {
                qSolicitudes.Where("s.usuario_asignado", (string)payload.usuario);
            }
            var solicitudes = qSolicitudes.ExecuteListDynamic();

            foreach (var solicitud in solicitudes)
            {
                var ds = (IDictionary <string, object>)solicitud;
                ds["contactos"] = qb.Table("ma.concesionarios_contactos")
                                  .Where("id_concesionario", ds["id_agencia"])
                                  .Select("rv", "nombre", "cargo", "telefono", "email")
                                  .ExecuteListDynamic();
                ds["evidencias"] = qb.Table("ma.evidencias")
                                   .Where("id_solicitud", ds["id"])
                                   .Select("id", "ruta")
                                   .ExecuteListDynamic();
            }
            return(new
            {
                solicitudes,
                motivosCierre = db.Table("ma.motivos_cierre")
                                .Select("id", "descripcion")
                                .ExecuteDataTable(),
                usuarios = db.Table("usuarios.v_usuarios")
                           .Select("usuario", "nombre")
                           .ExecuteDataTable()
            });
        }
예제 #8
0
        public object GetAsuntosPendientes([FromBody] JObject payloadJO)
        {
            dynamic payload = payloadJO.ToObject(typeof(ExpandoObject));
            var     qb      = new QueryBuilder.QueryBuilder((string)Miscelanea.Configuracion.Get.connections.capnet);
            // var estados = new String[]{"cancelado","suspendido","validado"};
            var qAsuntos = qb.Table("ma.asuntos as asu")
                           .Join("ma.departamento as de", "asu.id_departamento", "de.id")
                           .Join("ma.area as ar", "asu.id_area", "ar.id")
                           .Select(
                "asu.id",
                "asu.id_area",
                "ar.nombre as nombre_area",
                "asu.id_departamento",
                "de.nombre as nombre_departamento",
                "asu.usuario_asignado",
                "asu.motivo_cierre",
                "asu.descripcion",
                "asu.interno_externo",
                "asu.fecha_registro",
                "asu.fecha_fin",
                "asu.fecha_suspencion",
                "asu.fecha_actualizacion",
                "asu.estado",
                "asu.asunto",
                "asu.email",
                "asu.detalle_suspension",
                "asu.fecha_cancelacion",
                "asu.detalle_cancelado",
                "asu.fecha_validacion",
                "asu.detalle_rechazo",
                "asu.usuario_rechazo",
                "asu.usuario_creacion")
                           .WhereRaw("asu.estado not in ('cancelado','suspendido','validado')");
            DateTime?fecha_desde = !string.IsNullOrWhiteSpace((string)payload.fecha_desde) ?
                                   DateTime.ParseExact(payload.fecha_desde, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) :
                                   null;
            DateTime?fecha_hasta = !string.IsNullOrWhiteSpace((string)payload.fecha_hasta) ?
                                   DateTime.ParseExact(payload.fecha_hasta, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture) :
                                   null;

            if (fecha_desde == null && fecha_hasta != null)
            {
                fecha_desde = fecha_hasta;
                fecha_hasta = null;
            }
            if (fecha_desde != null && fecha_hasta != null)
            {
                qAsuntos.WhereRaw("cast(?? as date) between ? and ?", "asu.fecha_registro", fecha_desde, fecha_hasta);
            }
            else if (fecha_desde != null && fecha_hasta == null)
            {
                qAsuntos.WhereRaw("cast(?? as date) = ?", "asu.fecha_registro", fecha_desde);
            }
            else
            {
                qAsuntos.Limit(100);
            }
            if (!string.IsNullOrWhiteSpace((string)payload.usuario))
            {
                qAsuntos.Where("asu.usuario_asignado", (string)payload.usuario);
            }

            //Console.WriteLine(qAsuntos.ToString());
            var asuntos = qAsuntos.ExecuteListDynamic();

            foreach (var asunto in asuntos)
            {
                var ds = (IDictionary <string, object>)asunto;
                ds["contactos"] = (object)null;

                /*qb.Table("ma.concesionarios_contactos")
                 * .Where("id_concesionario", ds["id_agencia"])
                 * .Select("rv", "nombre", "cargo", "telefono", "email")
                 * .ExecuteListDynamic();*/
                ds["evidencias"] = qb.Table("ma.evidencias")
                                   .Where("id_solicitud", ds["id"])
                                   .Select("id", "ruta")
                                   .ExecuteListDynamic();
            }
            return(new
            {
                asuntos,
                motivos_cierre = db.Table("ma.motivos_cierre")
                                 .Select("id", "descripcion")
                                 .ExecuteDataTable(),
                todos_usuarios = db.Table("ma.usuario")
                                 .Select("usuario", "nombre", "id_area", "id_departamento", "id")
                                 .ExecuteDataTable()
            });
        }