Example #1
0
        public Solicitud Crear(int idCanalAtencion, long idAlumno, int?idCurso, long?idSesion, string consulta, string usuario)
        {
            var solicitud = new Solicitud();

            try
            {
                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd = new SqlCommand(SP.GSAV_SP_CREARSOLICITUD, cnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };

                    cmd.Parameters.AddWithValue("@pIdCanalAtencion", idCanalAtencion);
                    cmd.Parameters.AddWithValue("@pIdAlumno", idAlumno);
                    cmd.Parameters.AddWithValue("@pIdCurso", idCurso);
                    cmd.Parameters.AddWithValue("@pIdSesion", idSesion);
                    cmd.Parameters.AddWithValue("@pConsulta", consulta);
                    cmd.Parameters.AddWithValue("@pUsuario", usuario);
                    cmd.Parameters.AddWithValue("@pFechaCreacion", ConvertidorUtil.GmtToPacific(DateTime.Now));
                    //cmd.Parameters.AddWithValue("@pIdActividad", null);
                    //cmd.Parameters.AddWithValue("@pIdEmpleado", null);

                    SqlDataReader rd = cmd.ExecuteReader();

                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            solicitud = new Solicitud
                            {
                                IdSolicitud     = rd.GetInt32(rd.GetOrdinal("IDSOLICITUD")),
                                IdCanalAtencion = rd.GetInt32(rd.GetOrdinal("IDCANALATENCION")),
                                IdAlumno        = rd.GetInt32(rd.GetOrdinal("IDALUMNO")),
                                IdCurso         = rd.GetInt32(rd.GetOrdinal("IDCURSO")),
                                IdSesion        = rd.GetInt32(rd.GetOrdinal("IDSESION")),
                                LogUsuario      = rd.GetString(rd.GetOrdinal("LOGUSUARIO")),
                                Consulta        = rd.GetValue(rd.GetOrdinal("CONSULTA")) == DBNull.Value ? string.Empty : rd.GetString(rd.GetOrdinal("CONSULTA")),
                                FechaRegistro   = rd.GetDateTime(rd.GetOrdinal("FECHAREGISTRO")),
                                Estado          = rd.GetString(rd.GetOrdinal("ESTADO"))
                                                  //IdActividad = null,
                                                  //IdEmpleado = null,
                                                  //CumpleSLA = 0
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
                //throw ex;
            }

            return(solicitud);
        }
Example #2
0
        public JsonResult ListarSolicitudesAtencion(string fechaInicio, string fechaFin, string indicadorStatus)
        {
            var lista = new List <Solicitud>();

            try
            {
                var plista = plistarSolicitudesAtencion(fechaInicio, fechaFin);

                lista = plista.Where(q => q.Estado.Equals("P") || q.Estado.Equals("D")).ToList();

                foreach (var solicitud in lista)
                {
                    var dateNow  = ConvertidorUtil.GmtToPacific(DateTime.Now);
                    var dateSpan = dateNow - solicitud.FechaRegistro;

                    if (dateSpan.Days > 0)
                    {
                        solicitud.IndicadorStatus = "ROJO";
                    }
                    else
                    {
                        if (dateSpan.Hours < 12)
                        {
                            solicitud.IndicadorStatus = "VERDE";
                        }

                        if (dateSpan.Hours < 18 && dateSpan.Hours >= 12)
                        {
                            solicitud.IndicadorStatus = "AMARILLO";
                        }

                        if (dateSpan.Hours >= 18)
                        {
                            solicitud.IndicadorStatus = "ROJO";
                        }
                    }
                }

                if (indicadorStatus.Equals("VERDE"))
                {
                    lista = lista.AsEnumerable().Where(q => q.IndicadorStatus.Equals("VERDE")).ToList();
                }
                if (indicadorStatus.Equals("AMARILLO"))
                {
                    lista = lista.AsEnumerable().Where(q => q.IndicadorStatus.Equals("AMARILLO")).ToList();
                }
                if (indicadorStatus.Equals("ROJO"))
                {
                    lista = lista.AsEnumerable().Where(q => q.IndicadorStatus.Equals("ROJO")).ToList();
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
Example #3
0
        public Sesion Crear(long idAlumno)
        {
            Sesion sesion = new Sesion();

            try
            {
                DateTime dateTimeNow = ConvertidorUtil.GmtToPacific(DateTime.Now);

                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd = new SqlCommand(SP.GSAV_SP_CREARSESION, cnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@pIdAlumno", idAlumno);
                    cmd.Parameters.AddWithValue("@pFechaCreacion", dateTimeNow);

                    SqlDataReader rd = cmd.ExecuteReader();

                    if (rd.HasRows)
                    {
                        if (rd.Read())
                        {
                            sesion.IdSesion     = Convert.ToInt64(rd.GetDecimal(rd.GetOrdinal("ID_SESSION")));
                            sesion.IdAlumno     = idAlumno;
                            sesion.Nombre       = rd.GetString(rd.GetOrdinal("NOMBRE"));
                            sesion.ApePaterno   = rd.GetString(rd.GetOrdinal("APELLIDOPAT"));
                            sesion.ApeMaterno   = rd.GetString(rd.GetOrdinal("APELLIDOMAT"));
                            sesion.CodigoAlumno = rd.GetString(rd.GetOrdinal("CODIGOALUMNO"));
                            sesion.FechaInicio  = dateTimeNow;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LogError(ex);
            }

            return(sesion);
        }
Example #4
0
        public AlumnoUsuarioViewModel LeerUsuario(int idUsuario)
        {
            AlumnoUsuarioViewModel sesion = new AlumnoUsuarioViewModel();

            try
            {
                DateTime dateTimeNow = ConvertidorUtil.GmtToPacific(DateTime.Now);

                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd = new SqlCommand(SP.GSAV_SP_LEERDATOSUSUARIO, cnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };
                    cmd.Parameters.AddWithValue("@pIdUsuario", idUsuario);

                    SqlDataReader rd = cmd.ExecuteReader();

                    if (rd.HasRows)
                    {
                        if (rd.Read())
                        {
                            sesion.IdAlumno      = rd.GetInt32(rd.GetOrdinal("IDALUMNO"));
                            sesion.CodigoAlumno  = rd.GetString(rd.GetOrdinal("CODIGOALUMNO"));
                            sesion.Unidad        = rd.GetString(rd.GetOrdinal("UNIDAD"));
                            sesion.IdPersona     = rd.GetInt32(rd.GetOrdinal("IDPERSONA"));
                            sesion.IdUsuario     = rd.GetInt32(rd.GetOrdinal("IDUSUARIO"));
                            sesion.NombreUsuario = rd.GetString(rd.GetOrdinal("NOMBREUSUARIO"));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LogError(ex);
            }

            return(sesion);
        }
Example #5
0
        public static async Task ActualizarSolicitud(IDialogContext context, string estado)
        {
            try
            {
                var container = new Container();
                UnityConfig.RegisterTypes(container);

                var       solicitudManager = container.GetInstance <ISolicitud>();
                Solicitud solicitud        = context.UserData.GetValueOrDefault <Solicitud>("solicitud");
                Sesion    sesion           = context.UserData.GetValue <Sesion>("sesion");
                string    curso            = context.UserData.GetValue <string>("Curso");
                string    userName         = sesion.CodigoAlumno;

                Result receivedResult;
                context.UserData.TryGetValue("result", out receivedResult);

                Intencion intent;
                context.UserData.TryGetValue("intencion", out intent);

                ActivitiesByCourseViewModel actividad;
                context.UserData.TryGetValue("Actividad", out actividad);

                if (solicitud != null)
                {
                    long?intentId = null;

                    if (intent != null)
                    {
                        intentId = intent.IdIntencion;
                    }

                    var cursoManager = container.GetInstance <ICurso>();

                    List <CourseByModuleViewModel> studentActiveCourses = cursoManager.GetCourseByModuleActive(solicitud.IdAlumno);

                    CourseByModuleViewModel docenteCurso = studentActiveCourses.Where(s => s.Curso == curso).FirstOrDefault();

                    var respuestaPersonalizada = context.PrivateConversationData.GetValueOrDefault("custom", string.Empty);
                    var solucion = respuestaPersonalizada.Equals(string.Empty) ? receivedResult?.Speech : respuestaPersonalizada;

                    //await context.PostAsync(solucion);

                    int?idActividad  = actividad?.IdActividad;
                    int?idEmpleado   = docenteCurso?.IdEmpleado;
                    int?cumpleSLA    = 2;
                    var tipoConsulta = context.UserData.GetValue <string>("tipo-consulta");

                    var dif = ConvertidorUtil.GmtToPacific(DateTime.Now).Subtract(solicitud.FechaRegistro).TotalHours;

                    if (tipoConsulta == "1" && dif <= 48)
                    {
                        cumpleSLA = 1;
                    }
                    else
                    {
                        if (dif <= 24)
                        {
                            cumpleSLA = 1;
                        }
                    }


                    bool IsEmailSent = false;

                    DateTime?fechaSolucion = null;

                    switch (estado)
                    {
                    case "A":
                        fechaSolucion = ConvertidorUtil.GmtToPacific(DateTime.Now);
                        break;

                    case "D":

                        solucion  = string.Empty;
                        cumpleSLA = 0;

                        if (!string.IsNullOrEmpty(docenteCurso?.Email))
                        {
                            IsEmailSent = await SmtpEmailSender.SendEmailAsync("*****@*****.**",
                                                                               docenteCurso.Email,
                                                                               "UPECITO - Consultas Académicas No Resueltas",
                                                                               EmailTeacher(sesion.CodigoAlumno, sesion.NombreApePaterno, solicitud.Consulta));
                        }

                        if (IsEmailSent)
                        {
                            await context.PostAsync($"Su consulta ha sido derivada al Docente: {docenteCurso.Nombre} {docenteCurso.ApellidoPat}; quien le brindará una respuesta");
                        }
                        else
                        {
                            await context.PostAsync(receivedResult.Speech);
                        }

                        break;

                    default:
                        solucion  = string.Empty;
                        cumpleSLA = 0;

                        break;
                    }

                    solicitudManager.Actualizar(solicitud.IdSolicitud, intentId, solucion, estado, userName, docenteCurso?.IdCurso, idActividad, idEmpleado, cumpleSLA, fechaSolucion);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Example #6
0
        public Solicitud Atender(long idSolicitud, long?idIntencion, string solucion, string estado, string usuario, int?idCurso, int?idActividad, int?idEmpleado, int?cumpleSLA, DateTime?fechaSolucion)
        {
            var solicitud = new Solicitud();

            try
            {
                using (var cnn = MSSQLSERVERCnx.MSSqlCnx())
                {
                    SqlCommand cmd = null;
                    cnn.Open();

                    cmd = new SqlCommand(SP.GSAV_SP_ACTUALIZARSOLICITUD, cnn)
                    {
                        CommandType = CommandType.StoredProcedure
                    };

                    cmd.Parameters.AddWithValue("@pIdSolicitud", idSolicitud);
                    cmd.Parameters.AddWithValue("@pIdIntencion", idIntencion);
                    cmd.Parameters.AddWithValue("@pSolucion", solucion);
                    cmd.Parameters.AddWithValue("@pEstado", estado);
                    cmd.Parameters.AddWithValue("@pIdCurso", idCurso);
                    cmd.Parameters.AddWithValue("@pUsuario", usuario);
                    cmd.Parameters.AddWithValue("@pFechaActualiza", ConvertidorUtil.GmtToPacific(DateTime.Now));

                    if (estado == "D")
                    {
                        cmd.Parameters.AddWithValue("@pFechaDerivacion", ConvertidorUtil.GmtToPacific(DateTime.Now));
                    }
                    else
                    {
                        cmd.Parameters.AddWithValue("@pFechaDerivacion", null);
                    }

                    cmd.Parameters.AddWithValue("@pFechaSolucion", fechaSolucion);
                    cmd.Parameters.AddWithValue("@pIdActividad", idActividad);
                    cmd.Parameters.AddWithValue("@pIdEmpleado", idEmpleado);
                    cmd.Parameters.AddWithValue("@pCumpleSla", cumpleSLA);

                    SqlDataReader rd = cmd.ExecuteReader();

                    if (rd.HasRows)
                    {
                        while (rd.Read())
                        {
                            solicitud = new Solicitud
                            {
                                IdSolicitud     = rd.GetInt32(rd.GetOrdinal("IDSOLICITUD")),
                                IdCanalAtencion = rd.GetInt32(rd.GetOrdinal("IDCANALATENCION")),
                                IdAlumno        = rd.GetInt32(rd.GetOrdinal("IDALUMNO")),
                                IdCurso         = rd.GetInt32(rd.GetOrdinal("IDCURSO")),
                                IdSesion        = rd.GetInt32(rd.GetOrdinal("IDSESION")),
                                LogUsuario      = rd.GetString(rd.GetOrdinal("LOGUSUARIO")),
                                Consulta        = rd.GetValue(rd.GetOrdinal("CONSULTA")) == DBNull.Value ? string.Empty : rd.GetString(rd.GetOrdinal("CONSULTA")),
                                FechaRegistro   = rd.GetDateTime(rd.GetOrdinal("FECHAREGISTRO")),
                                Estado          = rd.GetString(rd.GetOrdinal("ESTADO"))
                                                  //IdActividad = rd.GetInt32(rd.GetOrdinal("IDACTIVIDAD")),
                                                  //IdEmpleado = rd.GetInt32(rd.GetOrdinal("IDEMPLEADO")),
                                                  //CumpleSLA = rd.GetInt32(rd.GetOrdinal("CUMPLESLA"))
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                LogError(ex);
            }

            return(solicitud);
        }
Example #7
0
        public AlertModel CreateIntent(Intencion intencion, List <FraseEntrenamientoModel> frases)
        {
            var intento   = new IntentoModel();
            var resultado = new AlertModel();

            try
            {
                var fileSavePath = System.Web.HttpContext.Current.Server.MapPath("~/Dialogflow.json/") + ConstantesWeb.DialogFlow.FilePrivateKeyIdJson;

                if ((System.IO.File.Exists(fileSavePath)))
                {
                    var cred    = GoogleCredential.FromFile(fileSavePath);
                    var channel = new Channel(SessionsClient.DefaultEndpoint.Host, SessionsClient.DefaultEndpoint.Port, cred.ToChannelCredentials());
                    var client  = IntentsClient.Create(channel);

                    var intent = new Intent();
                    intent.DisplayName = intencion.Nombre;


                    //Actualizar Frases de Entrenamiento
                    intent.TrainingPhrases.Clear();
                    foreach (var frase_ in frases)
                    {
                        var trainingPhrasesParts = new List <string>();
                        trainingPhrasesParts.Add(frase_.Descripcion);
                        var phraseParts = new List <Intent.Types.TrainingPhrase.Types.Part>();
                        foreach (var part in trainingPhrasesParts)
                        {
                            phraseParts.Add(new Intent.Types.TrainingPhrase.Types.Part()
                            {
                                Text = part
                            });
                        }
                        var trainingPhrase = new Intent.Types.TrainingPhrase();
                        trainingPhrase.Parts.AddRange(phraseParts);
                        intent.TrainingPhrases.Add(trainingPhrase);
                    }

                    //Actualizar Respuesta
                    intent.Messages.Clear();
                    var text = new Intent.Types.Message.Types.Text();
                    text.Text_.Add(intencion.Respuesta);
                    var message_ = new Intent.Types.Message()
                    {
                        Text = text
                    };
                    intent.Messages.Add(message_);


                    var newIntent = client.CreateIntent(
                        parent: new ProjectAgentName(ConstantesWeb.DialogFlow.ProjectId),
                        intent: intent
                        );

                    resultado.Id          = newIntent.IntentName.IntentId;
                    resultado.DisplayName = newIntent.DisplayName;
                    oIBLSolicitud.InsertarIntencionConsulta(newIntent.DisplayName, newIntent.IntentName.IntentId, ConvertidorUtil.GmtToPacific(DateTime.Now), intencion.IdIntencionPadre);
                    resultado.Mensaje = "INSERT-OK";
                }
            }
            catch (Exception ex)
            {
                resultado.MessageError = "ERROR: " + ex.Message;
                resultado.Mensaje      = "INSERT-ERROR";
            }

            return(resultado);
        }