public CjCRSummary ConsultaCapacidad(String noEmpleado, CjCRCredential credential)
        {
            CjCREmpleadoPool empleado = PoolDao.GetPoolByEmpleado(noEmpleado, credential);
            int status = CjCRTurnadorStatus.UNIDAD_NEGOCIO_INACTIVA;
                CjCREmpleadoPool empleadoPool = new CjCREmpleadoPool();
                CjCRCualidadList cualidad = new CjCRCualidadList();
                CjCRSummary estado = new CjCRSummary();
                empleadoPool.NoEmpleado = noEmpleado;
                int unidadNegocioEmpleado = PoolDao.UnidadEmpleado(noEmpleado, credential);
                if (unidadNegocioEmpleado == CjCRTurnadorStatus.OPERATION_FAIL) {
                    status =  CjCRTurnadorStatus.OPERATION_FAIL;
                    return TurnadorSummaryFactory.Get(status);
                }
                CjCRDictionary<Int32, CjCRUnidadNegocio> unidadesNegocio = NegocioDao.GetUnidadesNegocio(credential);
                List<CjCRUnidadNegocio> unidadesNegocioList = unidadesNegocio.Values.ToList();

                foreach (CjCRUnidadNegocio i in unidadesNegocioList)
                {
                    if (i.IdUnidadNegocio == unidadNegocioEmpleado)
                    {
                        if (i.Estatus == 1)
                        {
                            status = CjCRTurnadorStatus.OPERATION_COMPLETE;
                        }
                        else
                        {
                            status = CjCRTurnadorStatus.UNIDAD_NEGOCIO_INACTIVA;
                        }
                    }

                }
                return TurnadorSummaryFactory.Get(status);
        }
        public CjCREmpleadoPool Get()
        {
            CjCREmpleadoPool empleadoPool = new CjCREmpleadoPool();

            return empleadoPool;
        }
        public int SetEstado(CjCREmpleadoPool empleadoPool, String origen, CjCRCredential credential)
        {
            int resultCode = CjCRTurnadorStatus.OPERATION_FAIL;

            try
            {
                resultCode = SetEstadoExecute(empleadoPool, origen, credential);
            }
            catch (Exception ex)
            {
                Log.Error(CjCRPropertyUtils.GetFormat("sentence.execution.error", ex.Message));
            }

            return resultCode;
        }
        private int SetEstadoExecute(CjCREmpleadoPool empleadoPool, String origen, CjCRCredential credential)
        {
            Autenticate(credential);

            return AdoTemplate.Execute<Int32>(delegate(DbCommand command)
            {
                int resultCode = CjCRTurnadorStatus.OPERATION_FAIL;
                DbDataReader reader;

                command.CommandType = CommandType.StoredProcedure;
                command.CommandText = "PACJCCLUTRPoolAtencion";

                CjCRDaoUtils.AddParamNotNull(command, "@pcEmpNo", empleadoPool.NoEmpleado);
                CjCRDaoUtils.AddParamNotNull(command, "@pcUser", credential.User);
                CjCRDaoUtils.AddParamNotNull(command, "@piEstatus", empleadoPool.Estado);
                CjCRDaoUtils.AddParamNotNull(command, "@piCualidad",
                    empleadoPool.Cualidades.GetIdCualidad());
                CjCRDaoUtils.AddParamNotNull(command, "@pcValor",
                    empleadoPool.Cualidades.GetValor());
                CjCRDaoUtils.AddParamNotNull(command, "@pcOrigenServicio", origen);
                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    resultCode = reader.GetInt32(0);
                }

                return resultCode;
            });
        }
        private CjCRSummary SetEstadoEmpleado(CjCREmpleadoPool empleadoPool, int sigEstadoAtencion,
            String origen, CjCRCredential credential)
        {
            int statusResult = CjCRTurnadorStatus.EMPLEADO_ESTADO_INCORRECTO;
            if (EstadosAtencionPool.IsNext(empleadoPool.Estado,
                        sigEstadoAtencion))
            {
                empleadoPool.Estado = sigEstadoAtencion;

                statusResult = PoolDao.SetEstado(empleadoPool,origen, credential);
            }

            return TurnadorSummaryFactory.Get(statusResult);
        }
 public CjCREmpleadoPool GetEmpleado(String noEmpleado, CjCRCredential credential)
 {
     CjCREmpleadoPool empPool = new CjCREmpleadoPool();
     empPool = PoolDao.GetPoolByEmpleado(noEmpleado, credential);
     if (empPool == null) empPool = new CjCREmpleadoPool();
     return empPool;
 }
        public CjCRSummary FinalizarTurno(String noEmpleado, CjCRTurno turno, CjCRCredential credential)
        {
            String origen = "Finaliza Turno";
            CjCREmpleadoPool empPool = PoolDao.GetPoolByEmpleado(noEmpleado, credential);
                CjCREmpleadoPool empleadoPool = new CjCREmpleadoPool();
                empleadoPool = PoolDao.GetPoolByEmpleado(noEmpleado, credential);
                CjCRCualidadList cualidad = new CjCRCualidadList();
                int unidadNegocio = PoolDao.UnidadEmpleado(noEmpleado, credential);
                cualidad.SetIdUnidadNegocio(unidadNegocio);
                empleadoPool.Cualidades = cualidad;
                CjCRTurno turnoAtendido = TurnosDao.GetTurno(turno, credential);

                return SetEstado(noEmpleado, turnoAtendido,
                CjCRTurnadorStatus.ATENCION_NO_DISPONIBLE,
                CjCRTurnadorStatus.TURNO_ATENDIDO,origen, credential);
        }
        public CjCRSummary AtenderTurno(String noEmpleado, CjCRTurno turno, CjCRCredential credential)
        {
            String origen = "Atender Turno";
            CjCRSummary mensaje = new CjCRSummary();
            CjCRSummary mensaje2 = new CjCRSummary();
            CjCREmpleadoPool emp = new CjCREmpleadoPool();
            emp = GetEmpleado(noEmpleado, credential);
            CjCRTurno turnoactual = GetTurno(turno.Fecha, turno.IdUnidadNegocio, turno.IdTurno, credential);

            if (turnoactual.Empleado.NoEmpleado == noEmpleado)
            {
                if (turnoactual.Estado == CjCRTurnadorStatus.TURNO_ASIGNADO)
                {
                    if (emp.Estado == CjCRTurnadorStatus.ATENCION_ASIGNADO)
                    {
                        return ActualizarTurno(noEmpleado, turno, CjCRTurnadorStatus.ATENCION_OCUPADO,
                        CjCRTurnadorStatus.TURNO_EN_ATENCION, origen, credential);
                    }
                    else
                    {
                        mensaje = TurnadorSummaryFactory.Get(CjCRTurnadorStatus.EMPLEADO_ESTADO_INCORRECTO);
                        return mensaje;
                    }
                }
                else
                {

                    mensaje = TurnadorSummaryFactory.Get(CjCRTurnadorStatus.TURNO_ESTADO_INCORRECTO);

                    return mensaje;

                }
            }
            else
            {
                mensaje =  TurnadorSummaryFactory.Get(CjCRTurnadorStatus.TURNO_ASIGNADO_OTRO_EMPLEADO);

                mensaje.Detail = String.Format(mensaje.Detail, turnoactual.IdTurno,
                       "", turnoactual.Empleado.NoEmpleado);

                return mensaje;
            }
        }
        public CjCRSummary SetNoDisponible(String noEmpleado,
            CjCRCredential credential)
        {
            String origen = "SetNoDisponible";
            CjCREmpleadoPool empleadoPool = new CjCREmpleadoPool();
            empleadoPool = PoolDao.GetPoolByEmpleado(noEmpleado, credential); ;
            CjCRCualidadList cualidad = new CjCRCualidadList();
            int statusResult;
            int unidadNegocio = PoolDao.UnidadEmpleado(noEmpleado, credential);
            //empleadoPool.Estado = 0;
            if (empleadoPool != null)
            {
                cualidad.SetIdUnidadNegocio(unidadNegocio);
                empleadoPool.Cualidades = cualidad;

                if (empleadoPool.Estado == CjCRTurnadorStatus.ATENCION_ASIGNADO || empleadoPool.Estado == CjCRTurnadorStatus.ATENCION_OCUPADO)
                {
                    statusResult = CjCRTurnadorStatus.EMPLEADO_ESTADO_INCORRECTO;
                }
                else
                {
                    empleadoPool.Estado = CjCRTurnadorStatus.ATENCION_NO_DISPONIBLE;
                    statusResult = PoolDao.SetEstado(empleadoPool,origen, credential);
                }

            }
            else
            {
                CjCREmpleadoPool empleadoPool1 = new CjCREmpleadoPool();
                empleadoPool1.Estado = CjCRTurnadorStatus.ATENCION_NO_DISPONIBLE;
                empleadoPool1.NoEmpleado = noEmpleado;
                cualidad.SetIdUnidadNegocio(unidadNegocio);
                empleadoPool1.Cualidades = cualidad;
                statusResult = PoolDao.SetEstado(empleadoPool1, origen, credential);
            }
            return TurnadorSummaryFactory.Get(statusResult);
        }