Пример #1
0
        /// <summary>
        /// Consulta si existe una sala de colaborador disponible
        /// </summary>
        /// <param name="bAgendada"></param>
        /// <param name="iIdUsuario"></param>
        /// <param name="dtFechaConsulta"></param>
        /// <returns></returns>
        public IMDResponse <EntColaborador> BObtenerSala(bool?bAgendada = null, int?iIdUsuario = null, DateTime?dtFechaConsulta = null)
        {
            IMDResponse <EntColaborador> response = new IMDResponse <EntColaborador>();
            EntColaborador oColaborador           = new EntColaborador();

            string metodo = nameof(this.BObtenerSala);

            logger.Info(IMDSerialize.Serialize(67823458591441, $"Inicia {metodo}(int? iIdTipoProducto = null, int? iIdUsuario = null, DateTime? dtFechaConsulta = null)"));

            try
            {
                IMDResponse <DataTable> dtColaborador = datColaborador.DObtenerSala(bAgendada, iIdUsuario, dtFechaConsulta);
                if (dtColaborador.Code != 0)
                {
                    return(dtColaborador.GetResponse <EntColaborador>());
                }


                foreach (DataRow item in dtColaborador.Result.Rows)
                {
                    IMDDataRow rows = new IMDDataRow(item);

                    oColaborador = new EntColaborador
                    {
                        iIdColaborador = rows.ConvertTo <int>("iIdColaborador"),
                        iNumSala       = rows.ConvertTo <int?>("iNumSala")
                    };
                }

                //Verificar si se ha encontrado una sala disponible
                string medicosOcupados = "Todos los médicos se encuentran ocupados en este momento.";
                if (oColaborador.iNumSala == null)
                {
                    response.Code    = -7262876723423;
                    response.Message = medicosOcupados;
                    return(response);
                }

                response.Code    = 0;
                response.Message = dtColaborador.Result.Rows.Count > 0 ? "Se ha encontrado un sala disponible." : medicosOcupados;
                response.Result  = oColaborador;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458592218;
                response.Message = "Ocurrió un error inesperado al obtener la sala del colaborador.";

                logger.Error(IMDSerialize.Serialize(67823458592218, $"Error en {metodo}(int? iIdTipoProducto = null, int? iIdUsuario = null, DateTime? dtFechaConsulta = null): {ex.Message}", ex, response));
            }
            return(response);
        }
Пример #2
0
        /// <summary>
        /// Guarda un colaborador y sus respectivas cuentas en el CGU
        /// </summary>
        /// <param name="entCreateColaborador"></param>
        /// <returns></returns>
        public IMDResponse <bool> BSaveColaborador(EntCreateColaborador entCreateColaborador)
        {
            IMDResponse <bool> response = new IMDResponse <bool>();

            string metodo = nameof(this.BSaveColaborador);

            logger.Info(IMDSerialize.Serialize(67823458457797, $"Inicia {metodo}(EntCreateColaborador entCreateColaborador)", entCreateColaborador));

            try
            {
                if (entCreateColaborador == null)
                {
                    response.Code    = 76823456345;
                    response.Message = "No se ingresó información del colaborador.";
                    return(response);
                }

                if (entCreateColaborador.iIdTipoDoctor == (int)EnumTipoDoctor.MedicoCallCenter || entCreateColaborador.iIdTipoDoctor == (int)EnumTipoDoctor.MedicoAdministrativo)
                {
                    EntUsuario entUsuario = new EntUsuario
                    {
                        bActivo           = entCreateColaborador.bActivo,
                        bBaja             = entCreateColaborador.bBaja,
                        dtFechaNacimiento = entCreateColaborador.dtFechaNacimientoDoctor,
                        iIdPerfil         = entCreateColaborador.bAdministrador ? (int)EnumPerfilPrincipal.DoctorAdministrador : (int)EnumPerfilPrincipal.DoctorCallCenter,
                        iIdTipoCuenta     = (int)EnumTipoCuenta.Titular,
                        iIdUsuario        = entCreateColaborador.iIdUsuarioCGU,
                        iIdUsuarioMod     = entCreateColaborador.iIdUsuarioMod,
                        sApellidoMaterno  = entCreateColaborador.sApellidoMaternoDoctor,
                        sApellidoPaterno  = entCreateColaborador.sApellidoPaternoDoctor,
                        sCorreo           = entCreateColaborador.sCorreoDoctor,
                        sDomicilio        = entCreateColaborador.sDomicilioDoctor,
                        sNombres          = entCreateColaborador.sNombresDoctor,
                        sPassword         = entCreateColaborador.sPasswordTitular,
                        sTelefono         = entCreateColaborador.sTelefonoDoctor,
                        sUsuario          = entCreateColaborador.sUsuarioTitular,
                        bAcceso           = entCreateColaborador.bAcceso
                    };

                    //Doctores callcenter o administrativos, sólo guardar usuario y colaborador
                    IMDResponse <EntUsuario> respuestaGuardarUsuarioCGU = busUsuario.BSaveUsuario(entUsuario, true);
                    if (respuestaGuardarUsuarioCGU.Code != 0)
                    {
                        return(respuestaGuardarUsuarioCGU.GetResponse <bool>());
                    }

                    entCreateColaborador.iIdEspecialidad = (int)EnumEspecialidadPrincipal.MedicinaGeneral;
                    entCreateColaborador.iIdUsuarioCGU   = (int)respuestaGuardarUsuarioCGU.Result.iIdUsuario;
                    entCreateColaborador.iIdTipoCuenta   = (int)EnumTipoCuenta.Titular;
                    entCreateColaborador.iIdTipoDoctor   = entCreateColaborador.bAdministrador ? (int)EnumTipoDoctor.MedicoAdministrativo : entCreateColaborador.iIdTipoDoctor;

                    IMDResponse <bool> respuestaGuardarColaborador = datColaborador.DSaveColaborador(entCreateColaborador);
                    if (respuestaGuardarColaborador.Code != 0)
                    {
                        return(respuestaGuardarColaborador);
                    }
                }
                else if (entCreateColaborador.iIdTipoDoctor == (int)EnumTipoDoctor.MedicoEspecialista)
                {
                    if (entCreateColaborador.bActivo && !entCreateColaborador.bBaja)
                    {
                        if (entCreateColaborador.iIdEspecialidad == 0)
                        {
                            response.Code    = -876862348762374;
                            response.Message = "No se ha especificado la especialidad del médico colaborador.";
                            return(response);
                        }

                        if (string.IsNullOrWhiteSpace(entCreateColaborador.sUsuarioAdministrativo) && entCreateColaborador.bAcceso)
                        {
                            response.Code    = -7234869627782;
                            response.Message = "No se han especificado los datos de cuenta administrativa.";
                            return(response);
                        }

                        if (entCreateColaborador.iIdColaborador == 0 && string.IsNullOrWhiteSpace(entCreateColaborador.sPasswordAdministrativo) && entCreateColaborador.bAcceso)
                        {
                            response.Code    = -324778287623;
                            response.Message = "No se han especificado los datos de cuenta administrativa.";
                            return(response);
                        }
                    }

                    //Generar usuario titular y administrativo
                    EntUsuario entUsuarioTitular = new EntUsuario
                    {
                        bActivo           = entCreateColaborador.bActivo,
                        bBaja             = entCreateColaborador.bBaja,
                        dtFechaNacimiento = entCreateColaborador.dtFechaNacimientoDoctor,
                        iIdPerfil         = (int)EnumPerfilPrincipal.DoctorEspecialista,
                        iIdTipoCuenta     = (int)EnumTipoCuenta.Titular,
                        iIdUsuario        = entCreateColaborador.iIdUsuarioCGU,
                        iIdUsuarioMod     = entCreateColaborador.iIdUsuarioMod,
                        sApellidoMaterno  = entCreateColaborador.sApellidoMaternoDoctor,
                        sApellidoPaterno  = entCreateColaborador.sApellidoPaternoDoctor,
                        sCorreo           = entCreateColaborador.sCorreoDoctor,
                        sDomicilio        = entCreateColaborador.sDomicilioDoctor,
                        sNombres          = entCreateColaborador.sNombresDoctor,
                        sPassword         = entCreateColaborador.sPasswordTitular,
                        sTelefono         = entCreateColaborador.sTelefonoDoctor,
                        sUsuario          = entCreateColaborador.sUsuarioTitular,
                        bAcceso           = entCreateColaborador.bAcceso
                    };

                    EntUsuario entUsuarioAdministrativo = new EntUsuario
                    {
                        bActivo           = entCreateColaborador.bActivo,
                        bBaja             = entCreateColaborador.bBaja,
                        dtFechaNacimiento = entCreateColaborador.dtFechaNacimientoDoctor,
                        iIdPerfil         = (int)EnumPerfilPrincipal.AdministradorEspecialista,
                        iIdTipoCuenta     = (int)EnumTipoCuenta.Administrativa,
                        iIdUsuario        = entCreateColaborador.iIdUsuarioCGU,
                        iIdUsuarioMod     = entCreateColaborador.iIdUsuarioMod,
                        sApellidoMaterno  = entCreateColaborador.sApellidoMaternoDoctor,
                        sApellidoPaterno  = entCreateColaborador.sApellidoPaternoDoctor,
                        sCorreo           = entCreateColaborador.sCorreoDoctor,
                        sDomicilio        = entCreateColaborador.sDomicilioDoctor,
                        sNombres          = entCreateColaborador.sNombresDoctor,
                        sPassword         = entCreateColaborador.sPasswordAdministrativo,
                        sTelefono         = entCreateColaborador.sTelefonoDoctor,
                        sUsuario          = entCreateColaborador.sUsuarioAdministrativo,
                        bAcceso           = entCreateColaborador.bAcceso
                    };

                    if (entUsuarioTitular.sUsuario == entUsuarioAdministrativo.sUsuario && !string.IsNullOrWhiteSpace(entUsuarioTitular.sUsuario) && !string.IsNullOrWhiteSpace(entUsuarioAdministrativo.sUsuario))
                    {
                        response.Code    = -2345674657;
                        response.Message = "El usuario titular no puede ser el mismo que el usuario administrativo.";
                        return(response);
                    }

                    //Validar que los datos y disponibilidad de nombre de usuario de ambas cuentas antes de guardar
                    if (entCreateColaborador.bActivo && !entCreateColaborador.bBaja)
                    {
                        IMDResponse <bool> resValidacionTitular = busUsuario.BValidaDatos(entUsuarioTitular);
                        if (resValidacionTitular.Code != 0)
                        {
                            return(resValidacionTitular);
                        }

                        IMDResponse <bool> resValidacionAdministrativo = busUsuario.BValidaDatos(entUsuarioAdministrativo);
                        if (resValidacionAdministrativo.Code != 0)
                        {
                            return(resValidacionAdministrativo);
                        }
                    }

                    //Verificar si hay que enviar las credenciales por correo de ambas cuentas
                    bool activacionUsuario = false;
                    if (entCreateColaborador.bAcceso)
                    {
                        if (entCreateColaborador.iIdColaborador != 0)
                        {
                            IMDResponse <List <EntColaborador> > resGetColaborador = this.BGetColaborador(entCreateColaborador.iIdColaborador);
                            if (resGetColaborador.Code == 0)
                            {
                                if (resGetColaborador.Result.Count == 1)
                                {
                                    EntColaborador colaborador = resGetColaborador.Result.First();
                                    if (!colaborador.bAcceso)
                                    {
                                        activacionUsuario = true;
                                    }
                                }
                            }
                        }
                    }

                    //Guardar para obtener el id de usuario de ambas cuentas en el CGU
                    IMDResponse <EntUsuario> respuestaGuardarUsuarioCGU = busUsuario.BSaveUsuario(entUsuarioTitular);
                    if (respuestaGuardarUsuarioCGU.Code != 0)
                    {
                        return(respuestaGuardarUsuarioCGU.GetResponse <bool>());
                    }

                    entCreateColaborador.iIdUsuarioCGU = (int)respuestaGuardarUsuarioCGU.Result.iIdUsuario;
                    entCreateColaborador.iIdTipoCuenta = (int)EnumTipoCuenta.Titular;

                    entUsuarioAdministrativo.iIdUsuario = respuestaGuardarUsuarioCGU.Result.iIdUsuario;

                    respuestaGuardarUsuarioCGU = busUsuario.BSaveUsuario(entUsuarioAdministrativo);
                    if (respuestaGuardarUsuarioCGU.Code != 0)
                    {
                        return(respuestaGuardarUsuarioCGU.GetResponse <bool>());
                    }

                    //Guardar la cueta de colaborador
                    IMDResponse <bool> respuestaGuardarColaborador = datColaborador.DSaveColaborador(entCreateColaborador);
                    if (respuestaGuardarColaborador.Code != 0)
                    {
                        return(respuestaGuardarColaborador);
                    }
                    if (entCreateColaborador.bAcceso)
                    {
                        if ((entCreateColaborador.bActivo && !entCreateColaborador.bBaja && (!string.IsNullOrWhiteSpace(entCreateColaborador.sPasswordTitular) || !string.IsNullOrWhiteSpace(entCreateColaborador.sPasswordAdministrativo))) || activacionUsuario)
                        {
                            List <string> users = new List <string> {
                                entCreateColaborador.sUsuarioTitular, entCreateColaborador.sUsuarioAdministrativo
                            };
                            IMDResponse <bool> resEnviarCredenciales = busUsuario.BEnviarCredenciales(entCreateColaborador.sCorreoDoctor, entCreateColaborador.iIdColaborador == 0 || activacionUsuario ? EnumEmailActionPass.Crear : EnumEmailActionPass.Modificar, users);
                        }
                    }
                }
                else
                {
                    response.Code    = -72348767232323;
                    response.Message = "No se ha especificado el tipo de médico colaborador.";
                    return(response);
                }

                response.Code    = 0;
                response.Message = "El colaborador ha sido guardado correctamente.";
                response.Result  = true;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458458574;
                response.Message = "Ocurrió un error inesperado al guardar el colaborador.";

                logger.Error(IMDSerialize.Serialize(67823458458574, $"Error en {metodo}(EntCreateColaborador entCreateColaborador): {ex.Message}", entCreateColaborador, ex, response));
            }
            return(response);
        }
Пример #3
0
        /// <summary>
        /// Obtiene o filtra la lista de colaboradores
        /// </summary>
        /// <param name="piIdColaborador"></param>
        /// <param name="piIdTipoDoctor"></param>
        /// <param name="piIdEspecialidad"></param>
        /// <param name="piIdUsuarioCGU"></param>
        /// <returns></returns>
        public IMDResponse <List <EntColaborador> > BGetColaborador(int?piIdColaborador = null, int?piIdTipoDoctor = null, int?piIdEspecialidad = null, int?piIdUsuarioCGU = null)
        {
            IMDResponse <List <EntColaborador> > response = new IMDResponse <List <EntColaborador> >();

            string metodo = nameof(this.BGetColaborador);

            logger.Info(IMDSerialize.Serialize(67823458474891, $"Inicia {metodo}(int? piIdColaborador = null, int? piIdTipoDoctor = null, int? piIdEspecialidad = null, int? piIdUsuarioCGU = null)", piIdColaborador, piIdTipoDoctor, piIdEspecialidad, piIdUsuarioCGU));

            try
            {
                IMDResponse <DataTable> resGetColaboradores = datColaborador.DGetColaborador(piIdColaborador, piIdTipoDoctor, piIdEspecialidad, piIdUsuarioCGU);
                if (resGetColaboradores.Code != 0)
                {
                    return(resGetColaboradores.GetResponse <List <EntColaborador> >());
                }

                List <EntColaborador> lstColaboradores = new List <EntColaborador>();

                foreach (DataRow drColaborador in resGetColaboradores.Result.Rows)
                {
                    IMDDataRow dr = new IMDDataRow(drColaborador);

                    EntColaborador colaborador = new EntColaborador
                    {
                        bActivo                 = Convert.ToBoolean(dr.ConvertTo <int>("bActivo")),
                        bBaja                   = Convert.ToBoolean(dr.ConvertTo <int>("bBaja")),
                        bAcceso                 = Convert.ToBoolean(dr.ConvertTo <int>("bAcceso")),
                        bOcupado                = Convert.ToBoolean(dr.ConvertTo <int>("bOcupado")),
                        bOnline                 = Convert.ToBoolean(dr.ConvertTo <int>("bOnline")),
                        dtFechaCreacion         = dr.ConvertTo <DateTime>("dtFechaCreacion"),
                        dtFechaNacimientoDoctor = dr.ConvertTo <DateTime>("dtFechaNacimientoDoctor"),
                        iIdColaborador          = dr.ConvertTo <int>("iIdColaborador"),
                        iIdEspecialidad         = dr.ConvertTo <int>("iIdEspecialidad"),
                        iIdTipoCuenta           = dr.ConvertTo <int>("iIdTipoCuenta"),
                        iIdTipoDoctor           = dr.ConvertTo <int>("iIdTipoDoctor"),
                        iIdUsuarioCGU           = dr.ConvertTo <int>("iIdUsuarioCGU"),
                        iNumSala                = dr.ConvertTo <int?>("iNumSala"),
                        sApellidoMaternoDoctor  = dr.ConvertTo <string>("sApellidoMaternoDoctor"),
                        sApellidoPaternoDoctor  = dr.ConvertTo <string>("sApellidoPaternoDoctor"),
                        sCedulaProfecional      = dr.ConvertTo <string>("sCedulaProfecional"),
                        sCorreoDirectorio       = dr.ConvertTo <string>("sCorreo"),
                        sCorreoDoctor           = dr.ConvertTo <string>("sCorreoDoctor"),
                        sDireccionConsultorio   = dr.ConvertTo <string>("sDireccionConsultorio"),
                        sDomicilioDoctor        = dr.ConvertTo <string>("sDomicilioDoctor"),
                        sEspecialidad           = dr.ConvertTo <string>("sEspecialidad"),
                        sFechaCreacion          = string.Empty,
                        sFechaNacimientoDoctor  = string.Empty,
                        sMaps                   = dr.ConvertTo <string>("sMaps"),
                        sNombreDirectorio       = dr.ConvertTo <string>("sNombre"),
                        sNombreConsultorio      = dr.ConvertTo <string>("sNombreConsultorio"),
                        sNombresDoctor          = dr.ConvertTo <string>("sNombresDoctor"),
                        sPasswordAdministrativo = dr.ConvertTo <string>("sPasswordAdministrativo"),
                        sPasswordTitular        = dr.ConvertTo <string>("sPasswordTitular"),
                        sRFC = dr.ConvertTo <string>("sRFC"),
                        sTelefonoDirectorio = dr.ConvertTo <string>("sTelefono"),
                        sTelefonoDoctor     = dr.ConvertTo <string>("sTelefonoDoctor"),
                        sTipoCuenta         = dr.ConvertTo <string>("sTipoCuenta"),
                        sTipoDoctor         = dr.ConvertTo <string>("sTipoDoctor"),
                        sURL = dr.ConvertTo <string>("sURL"),
                        sUsuarioAdministrativo = dr.ConvertTo <string>("sUsuarioAdministrativo"),
                        sUsuarioTitular        = dr.ConvertTo <string>("sUsuarioTitular"),
                        sWhatsApp = dr.ConvertTo <string>("sWhatsApp"),
                    };

                    colaborador.sFechaCreacion         = colaborador.dtFechaCreacion.ToString("dd/MM/yyyy HH:mm");
                    colaborador.sFechaNacimientoDoctor = colaborador.dtFechaNacimientoDoctor.ToString("dd/MM/yyyy");
                    colaborador.sAcceso        = colaborador.bAcceso ? "SI" : "NO";
                    colaborador.bAdministrador = colaborador.iIdTipoDoctor == (int)EnumTipoDoctor.MedicoAdministrativo;

                    lstColaboradores.Add(colaborador);
                }

                response.Code    = 0;
                response.Message = "Se han obtenido los colaboradores del sistema.";
                response.Result  = lstColaboradores;
            }
            catch (Exception ex)
            {
                response.Code    = 67823458475668;
                response.Message = "Ocurrió un error inesperado al consultar los colaboradores del sistema.";

                logger.Error(IMDSerialize.Serialize(67823458475668, $"Error en {metodo}(int? piIdColaborador = null, int? piIdTipoDoctor = null, int? piIdEspecialidad = null, int? piIdUsuarioCGU = null): {ex.Message}", piIdColaborador, piIdTipoDoctor, piIdEspecialidad, piIdUsuarioCGU, ex, response));
            }
            return(response);
        }