예제 #1
0
        public JsonResult CargarChartDemandaTipoConsulta(string fechaInicio, string fechaFin)
        {
            var lista = new List <ChartCustom>();

            try
            {
                var chart = new ChartCustom();
                chart.FechaInicio = string.IsNullOrEmpty(fechaInicio) ? "NULL" : fechaInicio;
                chart.FechaFin    = string.IsNullOrEmpty(fechaFin) ? "NULL" : fechaFin;

                DateTime?dtFechaInicio = (fechaInicio.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaInicio) : null;
                DateTime?dtFechaFin    = (fechaFin.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaFin) : null;
                DateTime dtFchFin;
                if (dtFechaInicio != null && dtFechaFin != null)
                {
                    dtFchFin = dtFechaFin.GetValueOrDefault();
                    var nuevaFchFin = dtFchFin.AddDays(1);

                    chart.FechaInicio = fechaInicio;
                    chart.FechaFin    = ConvertidorUtil.FormatearFechaEsp(nuevaFchFin);
                }

                var objResult = oIBLSolicitud.ConsultarDemandaTipoConsulta(chart);
                lista = objResult.OneResult;
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
예제 #2
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);
        }
예제 #3
0
        public JsonResult ConsultarSolicitudes(string numSolicitud, string estado, string codigoAlumno, string nombreAlumno, string fechaInicio, string fechaFin)
        {
            var lista = new List <Solicitud>();

            try
            {
                var solicitud = new Solicitud();
                solicitud.IdSolicitud  = ConvertidorUtil.ConvertirInt32(numSolicitud);
                solicitud.Estado       = string.IsNullOrEmpty(estado) ? "0" : estado;
                solicitud.CodigoAlumno = string.IsNullOrEmpty(codigoAlumno) ? "NULL" : codigoAlumno;
                solicitud.Nombre       = string.IsNullOrEmpty(nombreAlumno) ? "NULL" : nombreAlumno;
                solicitud.FechaInicio  = string.IsNullOrEmpty(fechaInicio) ? "NULL" : fechaInicio;
                solicitud.FechaFin     = string.IsNullOrEmpty(fechaFin) ? "NULL" : fechaFin;
                solicitud.IdAlumno     = 0;
                solicitud.IdEmpleado   = 0;

                if (Session["Login-Info"] != null)
                {
                    var user = ((Entity.Util.ReturnObject <Usuario>)Session["Login-Info"]).OneResult;

                    if (ConstantesWeb.Rol.Alumno.Equals(user.Rol))
                    {
                        solicitud.IdAlumno = ConvertidorUtil.ConvertirInt32(user.Alumno.Id);
                    }

                    if (ConstantesWeb.Rol.Docente.Equals(user.Rol))
                    {
                        solicitud.IdEmpleado = ConvertidorUtil.ConvertirInt32(user.Empleado.IdEmpleado);
                    }

                    if (ConstantesWeb.Rol.Coordinador.Equals(user.Rol))
                    {
                        solicitud.IdEmpleado = 0;
                    }
                }

                DateTime?dtFechaInicio = (fechaInicio.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaInicio) : null;
                DateTime?dtFechaFin    = (fechaFin.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaFin) : null;
                DateTime dtFchFin;
                if (dtFechaInicio != null && dtFechaFin != null)
                {
                    dtFchFin = dtFechaFin.GetValueOrDefault();
                    var nuevaFchFin = dtFchFin.AddDays(1);

                    solicitud.FechaInicio = fechaInicio;
                    solicitud.FechaFin    = ConvertidorUtil.FormatearFechaEsp(nuevaFchFin);
                }

                var objResult = oIBLSolicitud.ConsultarSolicitudes(solicitud);
                lista = objResult.OneResult;
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
예제 #4
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
            });
        }
예제 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Detalle(object id)
        {
            if (this.Request.IsAuthenticated)
            {
                try
                {
                    var solicitud = new Solicitud();
                    var sol       = new Solicitud();
                    sol.IdSolicitud = ConvertidorUtil.ConvertirInt32(id);

                    if (sol.IdSolicitud.Equals(0))
                    {
                        return(this.RedirectToAction("Index", "Consulta"));
                    }

                    var objResult = oIBLSolicitud.ObtenerSolicitud(sol);
                    solicitud = objResult.OneResult;

                    var model = new SolicitudModel();
                    model.IdSolicitud       = ConvertidorUtil.ConvertirString(solicitud.IdSolicitud);
                    model.NumeroSolicitud   = solicitud.NumSolicitud;
                    model.FechaSolicitud    = solicitud.StrFechRegistro;
                    model.TipoConsulta      = solicitud.Canal;
                    model.PalabraClave      = solicitud.PalabraClave;
                    model.Alumno            = solicitud.CodigoAlumnoNombresApellidos;
                    model.Consulta          = solicitud.Consulta;
                    model.Respuesta         = solicitud.Solucion;
                    model.Estatus           = solicitud.Estado;
                    model.IntencionConsulta = solicitud.IntencionConsulta;
                    model.IdIntencionPadre  = solicitud.IdIntencionPadre;
                    model.EtiquetaCurso     = "Curso:" + solicitud.Curso;
                    model.EtiquetaActividad = "Actividad:" + solicitud.Actividad;
                    model.Curso             = solicitud.Curso;
                    model.Actividad         = solicitud.Actividad;

                    if (!model.Estatus.Equals("D"))
                    {
                        model.ReadOnly = "Y";
                    }

                    if (ConstantesWeb.IntencionConsulta.ActividadAcademica.Equals(model.IntencionConsulta))
                    {
                        model.VisibleCrearConsulta = "Y";
                    }

                    return(View("Detalle", model));
                }
                catch (Exception ex)
                {
                    return(this.RedirectToAction("Index", "Consulta"));
                }
            }
            else
            {
                return(this.RedirectToAction("Login", "Account"));
            }
        }
예제 #6
0
        public ActionResult Detalle(object id)
        {
            if (Session["Login-Info"] == null)
            {
                return(this.RedirectToAction("Login", "Account"));
            }

            if (this.Request.IsAuthenticated)
            {
                if (Session["Login-Info"] != null)
                {
                    var user = ((Entity.Util.ReturnObject <Usuario>)Session["Login-Info"]).OneResult;

                    if (!ConstantesWeb.Rol.Docente.Equals(user.Rol))
                    {
                        return(this.RedirectToAction("Index", "Home"));
                    }
                }

                try
                {
                    var    intencionModel = new IntentoModel();
                    string strId          = Convert.ToString(id);

                    if (strId.Equals("NEW"))
                    {
                        intencionModel.Id            = "NEW";
                        intencionModel.FechaCreacion = ConvertidorUtil.FormatearFechaHora(DateTime.Now);
                    }
                    else
                    {
                        if (!string.IsNullOrEmpty(strId))
                        {
                            var idIntencion = id + string.Empty;
                            intencionModel = new Dialogflow.DialogFlow(oIBLSolicitud).ObtenerIntento(idIntencion);
                        }

                        if (string.IsNullOrEmpty(intencionModel.Id))
                        {
                            return(this.RedirectToAction("Index", "BaseAcademico"));
                        }
                    }

                    return(View("Detalle", intencionModel));
                }
                catch (Exception ex)
                {
                    return(this.RedirectToAction("Index", "BaseAcademico"));
                }
            }
            else
            {
                return(this.RedirectToAction("Login", "Account"));
            }
        }
예제 #7
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> activity)
        {
            string userId = context.Activity.From.Id;

            var messageActivity = context.Activity.AsMessageActivity();
            var eventActivity   = context.Activity.AsEventActivity();


            var sesionData = context.UserData.GetValueOrDefault <Sesion>("sesion");

            if (sesionData == null || sesionData?.IdSesion == 0)
            {
                ConnectorClient connector = new ConnectorClient(new Uri(context.Activity.ServiceUrl));

                var container = new Container();
                UnityConfig.RegisterTypes(container);

                var sesion = container.GetInstance <ISesion>();

                AlumnoUsuarioViewModel alumno = sesion.LeerDatosUsuario(int.Parse(userId));

                if (alumno.IdAlumno == 0)
                {
                    var message = context.MakeMessage();
                    message.Text = $"No se ha registrado con un número de Alumno válido";

                    await context.PostAsync(message);

                    context.Done(this);
                    return;
                }

                sesionData = sesion.CrearSesion(ConvertidorUtil.GetLong(alumno.IdAlumno.ToString()));
                context.UserData.SetValue("sesion", sesionData);
            }

            if (eventActivity?.Name == "requestRootDialog" || messageActivity?.Text.ToUpper() == "INICIAR")
            {
                var message = context.MakeMessage();
                message.Text = $"Hola {sesionData.Nombre}, soy UPECITO el asesor del Aula Virtual de UPC. Te puedo ayudar con tus consultas académicas y Técnicas del Aula Virtual.";

                await context.PostAsync(message);

                Response inputLog = Helpers.PersistChatLog(null, sesionData, message.Text, "Bot", "BotFramework");
            }


            context.Call(new MenuDialog(), EndWelcome);
            return;
        }
예제 #8
0
        private List <Solicitud> plistarSolicitudesAtencion(string fechaInicio, string fechaFin)
        {
            var lista     = new List <Solicitud>();
            var solicitud = new Solicitud();

            solicitud.FechaInicio = string.IsNullOrEmpty(fechaInicio) ? "NULL" : fechaInicio;
            solicitud.FechaFin    = string.IsNullOrEmpty(fechaFin) ? "NULL" : fechaFin;
            solicitud.IdAlumno    = 0;
            solicitud.IdEmpleado  = 0;

            if (Session["Login-Info"] != null)
            {
                var user = ((Entity.Util.ReturnObject <Usuario>)Session["Login-Info"]).OneResult;

                if (ConstantesWeb.Rol.Alumno.Equals(user.Rol))
                {
                    solicitud.IdAlumno = ConvertidorUtil.ConvertirInt32(user.Alumno.Id);
                }

                if (ConstantesWeb.Rol.Docente.Equals(user.Rol))
                {
                    solicitud.IdEmpleado = ConvertidorUtil.ConvertirInt32(user.Empleado.IdEmpleado);
                }

                if (ConstantesWeb.Rol.Coordinador.Equals(user.Rol))
                {
                    solicitud.IdEmpleado = 0;
                }
            }

            DateTime?dtFechaInicio = (fechaInicio.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaInicio) : null;
            DateTime?dtFechaFin    = (fechaFin.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaFin) : null;
            DateTime dtFchFin;

            if (dtFechaInicio != null && dtFechaFin != null)
            {
                dtFchFin = dtFechaFin.GetValueOrDefault();
                var nuevaFchFin = dtFchFin.AddDays(1);

                solicitud.FechaInicio = fechaInicio;
                solicitud.FechaFin    = ConvertidorUtil.FormatearFechaEsp(nuevaFchFin);
            }

            var objResult = oIBLSolicitud.ConsultarSolicitudesDashboard(solicitud);

            lista = objResult.OneResult;
            return(lista);
        }
예제 #9
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);
        }
예제 #10
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);
        }
예제 #11
0
        public JsonResult ConsultarSolicitudAtencion(string idSolicitud)
        {
            var lista = new List <Solicitud>();

            try
            {
                var solicitud = new Solicitud();
                solicitud.IdSolicitud = ConvertidorUtil.ConvertirInt32(idSolicitud);

                var objResult = oIBLSolicitud.ConsultarSolicitudes(solicitud);
                lista = objResult.OneResult;
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
예제 #12
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);
        }
예제 #13
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);
            }
        }
예제 #14
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public JsonResult ConsultarIntenciones(string intencionPadre, string fraseEntrena, string respuesta, string fechaInicio, string fechaFin)
        {
            var lista         = new List <IntentoModel>();
            var listaAuxFecha = new List <IntentoModel>();
            var listaAuxFrase = new List <IntentoModel>();

            lista = new Dialogflow.DialogFlow(oIBLSolicitud).ObtenerIntentos();

            if (!string.IsNullOrEmpty(respuesta))
            {
                lista = lista.Where(q => q.Respuesta.ToUpper().Contains(respuesta.ToUpper())).ToList();
            }

            if (!string.IsNullOrEmpty(intencionPadre))
            {
                lista = lista.Where(q =>

                                    (q.IdIntencionPadre != null && q.IdIntencionPadre.ToUpper().Equals(intencionPadre.ToUpper())) ||
                                    (q.IdIntencionPadre.Equals("0") && q.IdIntencionConsulta.Equals(intencionPadre))

                                    ).ToList();
            }

            //-------------------------------------------------------------------------------------------------------------
            DateTime?dtFechaInicio = (fechaInicio.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaInicio) : null;
            DateTime?dtFechaFin    = (fechaFin.Length > 0) ? ConvertidorUtil.ConvertirDateTimeShort(fechaFin) : null;
            DateTime dtFchFin;

            if (dtFechaInicio != null && dtFechaFin != null)
            {
                dtFchFin = dtFechaFin.GetValueOrDefault();
                var nuevaFchFin = dtFchFin.AddDays(1);

                foreach (var intentoModel in lista)
                {
                    if (intentoModel.DtFechaCreacion >= dtFechaInicio && intentoModel.DtFechaCreacion <= nuevaFchFin)
                    {
                        listaAuxFecha.Add(intentoModel);
                    }
                }

                lista = listaAuxFecha;
            }

            //-------------------------------------------------------------------------------------------------------------
            if (!string.IsNullOrEmpty(fraseEntrena))
            {
                var contieneFrase = false;
                foreach (var intentoModel in lista)
                {
                    foreach (var frase in intentoModel.FrasesEntrenamiento)
                    {
                        if (frase.Descripcion.Contains(fraseEntrena))
                        {
                            contieneFrase = true;
                        }
                    }
                    if (contieneFrase)
                    {
                        listaAuxFrase.Add(intentoModel);
                        contieneFrase = false;
                    }
                }

                lista = listaAuxFrase;
            }

            return(new JsonResult {
                Data = lista, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
예제 #15
0
        public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> activity)
        {
            //context.Call(new MenuDialog(), ResumeWelcome);

            string userId = context.Activity.From.Id;
            var    result = await activity;

            //TODO: Manual override for testing purposes
            //userId = "1";

            //if (string.IsNullOrEmpty(userId))
            //{
            //    context.Wait(MessageReceivedAsync);
            //    //context.Done(true);
            //    return;
            //}

            //if (string.IsNullOrEmpty(result.Text))
            //{
            //    //context.Done(true);
            //    //context.Wait(MessageReceivedAsync);
            //    //return;
            //    context.Call(new RootDialog(), null);
            //}

            if (result.Text == "Iniciar")
            {
                var container = new Container();
                DependencyResolver.UnityConfig.RegisterTypes(container);

                var    sesion     = container.GetInstance <ISesion>();
                Sesion sesionData = sesion.CrearSesion(ConvertidorUtil.GetLong(userId));

                var message = context.MakeMessage();
                //var attachment = RootDialog.GetInfoCard();
                //message.Attachments.Add(attachment);

                //await context.PostAsync(message);

                message      = context.MakeMessage();
                message.Text = $"Hola {sesionData.Nombre}, soy UPECITO el asesor del Aula Virtual de UPC. Te puedo ayudar con tus consultas académicas y Técnicas del Aula Virtual.";

                await context.PostAsync(message);

                Response inputLog = Helpers.PersistChatLog(null, sesionData, message.Text, "Bot", "BotFramework");

                if (sesionData != null)
                {
                    context.UserData.SetValue("sesion", sesionData);
                    context.Call(new MenuDialog(), ResumeWelcome);
                }
                else
                {
                    context.Done(true);
                }
            }
            else
            {
                //context.Wait(MessageReceivedAsync);
                context.Call(new MenuDialog(), ResumeWelcome);
            }

            //await context.Forward(new MenuDialog(), ResumeWelcome, result, CancellationToken.None);
        }
예제 #16
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);
        }
예제 #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="idSolicitud"></param>
        /// <param name="solucion"></param>
        /// <returns></returns>
        public JsonResult EnviarSolucionSolicitud(
            string idSolicitud,
            string intencionPadre,
            string solucion,
            string accion,
            string nombreIntencion,
            string frase1,
            string frase2,
            string solucionIntencion,
            string curso,
            string actividad,
            string idDialogFlow)
        {
            var respuesta = string.Empty;

            try
            {
                if (accion.Equals("NEW"))
                {
                    var intencion = new Intencion();
                    intencion.IdDialogFlow = "NEW";


                    intencion.Nombre           = nombreIntencion;
                    intencion.Respuesta        = solucionIntencion;
                    intencion.IdIntencionPadre = intencionPadre;

                    var frases_ = new List <FraseEntrenamientoModel>();
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase1
                    });
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase2
                    });
                    var resultado = new Dialogflow.DialogFlow(oIBLSolicitud).CreateIntent(intencion, frases_);
                }

                if (accion.Equals("EDIT"))
                {
                    var intencion = new Intencion();
                    intencion.IdDialogFlow     = idDialogFlow;
                    intencion.Respuesta        = respuesta;
                    intencion.IdIntencionPadre = intencionPadre;

                    var frases_ = new List <FraseEntrenamientoModel>();
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase1
                    });
                    frases_.Add(new FraseEntrenamientoModel {
                        Descripcion = frase2
                    });
                    var resultado = new Dialogflow.DialogFlow(oIBLSolicitud).UpdateIntent(intencion, frases_);
                }

                var solicitud = new Solicitud();
                solicitud.IdSolicitud = ConvertidorUtil.ConvertirInt32(idSolicitud);
                solicitud.Solucion    = solucion;

                var objResult    = oIBLSolicitud.EnviarSolucionSolicitud(solicitud);
                var notificacion = objResult.OneResult;

                if (notificacion != null)
                {
                    var email     = new EmailUtil();
                    var sendEmail = email.NotificarSolucionConsultaAcademica(notificacion);

                    if (sendEmail)
                    {
                        respuesta = "SEND_EMAIL_OK";
                    }
                }
            }
            catch (Exception ex)
            {
            }

            return(new JsonResult {
                Data = respuesta, JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }