public ActionResult Eliminar(int codCitaAdmision)
        {
            try
            {
                BCitaAdmision objCita        = new BCitaAdmision();
                CitaAdmision  citaAmodificar = objCita.ListarTodo().Where(x => x.IdCitaAdmision == codCitaAdmision).FirstOrDefault();
                citaAmodificar.EstadoCita = new EstadoCita()
                {
                    IdEstadoCita = 4
                };                                                                //Eliminada
                citaAmodificar = objCita.Modificar(citaAmodificar);

                if (citaAmodificar.IdCitaAdmision > 0)
                {
                    return(Json(new { success = true, responseText = "OK" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { success = true, responseText = "Ocurrió un incoveniente al eliminar el registro" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult Consulta()
        {
            BCitaAdmision       objAdmision  = new BCitaAdmision();
            List <CitaAdmision> listAdmision = objAdmision.ListarTodo();

            return(View(listAdmision));
        }
        public ActionResult Programacion(int id)
        {
            BCitaAdmision            objCitaAdmision = new BCitaAdmision();
            BFechaCitaAdmision       objFechaCita    = new BFechaCitaAdmision();
            CitaAdmision             cita            = new CitaAdmision();
            GestionAdmisionViewModel viewModel       = new GestionAdmisionViewModel();

            try
            {
                cita = objCitaAdmision.ListarTodo().Where(x => x.IdCitaAdmision == id).FirstOrDefault();
                viewModel.CodCitaAdmision     = cita.IdCitaAdmision;
                viewModel.NombresPostulante   = cita.SolicitudAdmision.Postulante.FullName;
                viewModel.GradoDescripcion    = cita.SolicitudAdmision.Grado.Descripcion;
                viewModel.SucursalDescripcion = cita.SolicitudAdmision.Sucursal.Descripcion;
                viewModel.EstadoDescripcion   = cita.EstadoCita.Descripcion;

                var listfecha = (from c in objFechaCita.ListarTodo()
                                 select new
                {
                    id = c.FechaCita.ToString("dd/MM/yyyy"),
                    name = c.FechaCita.ToString("dd/MM/yyyy")
                }).Distinct().ToList();

                ViewBag.ListaFechaCita = new SelectList(listfecha, "id", "name", 0);

                return(View(viewModel));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult Registro(FormCollection collection)
        {
            try
            {
                BCitaAdmision objCita = new BCitaAdmision();
                CitaAdmision  cita    = objCita.ListarTodo().Where(x => x.IdCitaAdmision == Convert.ToInt32(collection["CodCitaAdmision"])).FirstOrDefault();


                BFechaCitaAdmision objFechaCita = new BFechaCitaAdmision();
                FechaCitaAdmision  fechaa       = new FechaCitaAdmision();
                var ok = objFechaCita.ListarTodo();
                if (cita.FechaCita != null)
                {
                    fechaa        = objFechaCita.ListarTodo().Where(f => f.FechaCita == cita.FechaCita).FirstOrDefault();
                    fechaa.Estado = 1;
                    objFechaCita.Modificar(fechaa);
                }



                DateTime fecha = DateTime.ParseExact(collection["FechaCitaAdmision"], "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
                cita.FechaCita  = new DateTime(fecha.Year, fecha.Month, fecha.Day, Convert.ToInt32(collection["HoraCitaAdmision"].Substring(0, 2)), 0, 0);
                cita.EstadoCita = new EstadoCita()
                {
                    IdEstadoCita = 2
                };
                cita = objCita.Modificar(cita);


                fechaa        = objFechaCita.ListarTodo().Where(f => f.FechaCita == cita.FechaCita).FirstOrDefault();
                fechaa.Estado = 0;
                objFechaCita.Modificar(fechaa);


                if (cita.IdCitaAdmision > 0)
                {
                    return(Json(new { success = true, responseText = "OK" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { success = true, responseText = "Ocurrió un incoveniente al registrar la cita" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult Modify(int id)
        {
            try
            {
                BCitaAdmision            objCitaAdmision = new BCitaAdmision();
                CitaAdmision             cita            = new CitaAdmision();
                GestionAdmisionViewModel viewModel       = new GestionAdmisionViewModel();
                cita = objCitaAdmision.ListarTodo().Where(x => x.IdCitaAdmision == id).FirstOrDefault();
                viewModel.CodApoderado = cita.SolicitudAdmision.Postulante.Apoderado.IdApoderado;
                viewModel.CodTipoDocumentoApoderado = cita.SolicitudAdmision.Postulante.Apoderado.TipoDocumento.IdTipoDocumento;
                viewModel.CodVinculo            = cita.SolicitudAdmision.Postulante.Apoderado.VinculoApoderado.IdVinculoApoderado;
                viewModel.NombresApoderado      = cita.SolicitudAdmision.Postulante.Apoderado.Nombre;
                viewModel.ApellidosApoderado    = cita.SolicitudAdmision.Postulante.Apoderado.Apellido;
                viewModel.NumDocumentoApoderado = cita.SolicitudAdmision.Postulante.Apoderado.NumeroDocumento;
                viewModel.OcupacionApoderado    = cita.SolicitudAdmision.Postulante.Apoderado.Ocupacion;
                viewModel.EmailApoderado        = cita.SolicitudAdmision.Postulante.Apoderado.Email;
                viewModel.TelefonoApoderado     = cita.SolicitudAdmision.Postulante.Apoderado.Telefono;
                viewModel.DireccionApoderado    = cita.SolicitudAdmision.Postulante.Apoderado.Direccion;

                viewModel.CodPostulante              = cita.SolicitudAdmision.Postulante.IdPostulante;
                viewModel.CodDepartamento            = cita.SolicitudAdmision.Postulante.Ciudad.Departamento.IdDepartamento;
                viewModel.CodCiudad                  = cita.SolicitudAdmision.Postulante.Ciudad.IdCiudad;
                viewModel.CodGenero                  = cita.SolicitudAdmision.Postulante.Genero.IdGenero;
                viewModel.CodTipoDocumentoPostulante = cita.SolicitudAdmision.Postulante.TipoDocumento.IdTipoDocumento;
                viewModel.NombresPostulante          = cita.SolicitudAdmision.Postulante.Nombre;
                viewModel.ApellidosPostulante        = cita.SolicitudAdmision.Postulante.Apellido;
                viewModel.NumDocumentoPostulante     = cita.SolicitudAdmision.Postulante.NumeroDocumento;
                viewModel.FechaNacimientoPostulante  = cita.SolicitudAdmision.Postulante.FechaNacimiento.ToString("dd/MM/yyyy");
                viewModel.LugarNacimientoPostulante  = cita.SolicitudAdmision.Postulante.LugarNacimiento;

                viewModel.CodSolicitudAdmision = cita.SolicitudAdmision.IdSolicitudAdmision;
                viewModel.CodGrado             = cita.SolicitudAdmision.Grado.IdGrado;
                viewModel.CodSucursal          = cita.SolicitudAdmision.Sucursal.IdSucursal;

                //viewModel.CodCitaAdmision = cita.IdCitaAdmision;
                //viewModel.CodEstadoCita = cita.EstadoCita.IdEstadoCita;
                //viewModel.FechaCitaAdmision = cita.FechaCita;

                PopulateDropDownList(cita.SolicitudAdmision.Postulante.Ciudad.Departamento.IdDepartamento);
                return(View(viewModel));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult GetExpedientes(int numeroDocumento)
        {
            StringBuilder htmlText      = new StringBuilder();
            BExpediente   objExpediente = new BExpediente();
            BCitaAdmision objcita       = new BCitaAdmision();

            try
            {
                List <Expediente>   listExpediente = objExpediente.ListarTodo().ToList();
                List <CitaAdmision> listCita       = objcita.ListarTodo().Where(x => Convert.ToInt32(x.SolicitudAdmision.Postulante.NumeroDocumento) == numeroDocumento).ToList();

                foreach (CitaAdmision cita in listCita)
                {
                    string strEstado;
                    htmlText.Append("<tr>");


                    if (listExpediente.Any(x => x.CitaAdmision.IdCitaAdmision == cita.IdCitaAdmision && x.EstadoExpediente != null))
                    {
                        int idexp = listExpediente.Where(c => c.CitaAdmision.IdCitaAdmision == cita.IdCitaAdmision).FirstOrDefault().IdExpediente;
                        htmlText.Append("<td> <a href='/ExpedienteAdmision/Ficha/" + idexp + "'>" + idexp + "</a> </td>");
                        strEstado = "<td> " + listExpediente.Where(x => x.CitaAdmision.IdCitaAdmision == cita.IdCitaAdmision).FirstOrDefault().EstadoExpediente.Descripcion + " </td>";
                    }
                    else
                    {
                        htmlText.Append("<td> -- </td>");
                        strEstado = "<td> Pendiente </td>";
                    }
                    htmlText.Append("<td> " + cita.SolicitudAdmision.Grado.Descripcion + " </td>");
                    htmlText.Append("<td> " + cita.SolicitudAdmision.Postulante.FullName + " </td>");
                    htmlText.Append("<td> " + cita.SolicitudAdmision.Sucursal.Descripcion + " </td>");
                    htmlText.Append("<td> " + cita.SolicitudAdmision.FechaSolicitud.Year + " </td>");
                    htmlText.Append(strEstado);

                    htmlText.Append("</tr>");
                }

                return(Json(new { success = true, responseText = "OK", cadena = htmlText.ToString() }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex.Message, cadena = "" }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult CancelarCita(int codCitaAdmision)
        {
            try
            {
                BCitaAdmision objCita = new BCitaAdmision();
                CitaAdmision  cita    = new CitaAdmision();

                cita = objCita.ListarTodo().Where(x => x.IdCitaAdmision == codCitaAdmision).FirstOrDefault();


                BFechaCitaAdmision objFechaCita = new BFechaCitaAdmision();
                FechaCitaAdmision  fechaa       = new FechaCitaAdmision();
                if (cita.FechaCita != null)
                {
                    fechaa        = objFechaCita.ListarTodo().Where(f => f.FechaCita == cita.FechaCita).FirstOrDefault();
                    fechaa.Estado = 1;
                    objFechaCita.Modificar(fechaa);
                }



                cita.EstadoCita = new EstadoCita()
                {
                    IdEstadoCita = 1
                };                                                      //pendiente
                cita.FechaCita = null;

                cita = objCita.Modificar(cita);

                if (cita.IdCitaAdmision > 0)
                {
                    return(Json(new { success = true, responseText = "OK" }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    return(Json(new { success = true, responseText = "Ocurrió un incoveniente con el registro" }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult CrearExpediente(int numeroDocumento)
        {
            BExpediente   objExpediente = new BExpediente();
            BCitaAdmision objCita       = new BCitaAdmision();

            try
            {
                if (!objCita.ListarTodo().Any(d => d.SolicitudAdmision.Postulante.NumeroDocumento == numeroDocumento.ToString()))
                {
                    return(Json(new { success = true, responseText = "No existe el número de documento para crear el expediente.", }, JsonRequestBehavior.AllowGet));
                }
                else if (objCita.ListarTodo().Any(x => x.FechaCita == null && Convert.ToInt32(x.SolicitudAdmision.Postulante.NumeroDocumento) == numeroDocumento))
                {
                    return(Json(new { success = true, responseText = "No se puede crear el expediente, porque no tiene una cita registrada.", }, JsonRequestBehavior.AllowGet));
                }
                else if (objExpediente.ListarTodo().Any(d => d.CitaAdmision.SolicitudAdmision.Postulante.NumeroDocumento == numeroDocumento.ToString()))
                {
                    return(Json(new { success = true, responseText = "No se puede crear el expediente porque ya existe uno activo.", }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    Expediente expediente = new Expediente()
                    {
                        CitaAdmision     = objCita.ListarTodo().Where(x => Convert.ToInt32(x.SolicitudAdmision.Postulante.NumeroDocumento) == numeroDocumento).FirstOrDefault(),
                        EstadoExpediente = new EstadoExpediente()
                        {
                            IdEstadoExpediente = 1
                        }                                                                   // Estado Pendiente
                    };
                    expediente = objExpediente.Crear(expediente);


                    ///////////////////////////////////////////////////////////////////////////////
                    BResultadoEvaluacion objResultadoEvaluacion = new BResultadoEvaluacion();
                    ResultadoEvaluacion  resultadoevaluacion    = new ResultadoEvaluacion()
                    {
                        Expediente      = expediente,
                        ResultadoPrueba = "Pendiente",
                        TipoEvaluacion  = "Pendiente",
                        Evaluador       = "Pendiente",
                        CargoEvaluador  = "Pendiente",
                        FechaEvaluacion = "Pendiente"
                    };
                    objResultadoEvaluacion.Crear(resultadoevaluacion);

                    BResultadoProceso objResultadoProceso = new BResultadoProceso();
                    ResultadoProceso  resultadoproceso    = new ResultadoProceso()
                    {
                        Expediente     = expediente,
                        Resultado      = "Pendiente",
                        FechaResultado = "Pendiente"
                    };
                    objResultadoProceso.Crear(resultadoproceso);

                    if (expediente.IdExpediente > 0)
                    {
                        return(Json(new { success = true, responseText = "OK" }, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(new { success = true, responseText = "Ocurrió un incoveniente al crear el expediente.", }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = true, responseText = ex.Message, }, JsonRequestBehavior.AllowGet));
            }
        }
        public ActionResult Modify(FormCollection collection)
        {
            try
            {
                BSolicitudAdmision objSolicitud  = new BSolicitudAdmision();
                BApoderado         objApoderado  = new BApoderado();
                BPostulante        objPostulante = new BPostulante();
                BCitaAdmision      objCita       = new BCitaAdmision();

                if (objPostulante.ListarTodo().Any(v => v.IdPostulante != Convert.ToInt32(collection["CodPostulante"]) && v.NumeroDocumento == collection["NumDocumentoPostulante"]))
                {
                    return(Json(new { success = true, responseText = "Ya existe un postulante con el mismo N° Documento. No se puede crear la solicitud." }, JsonRequestBehavior.AllowGet));
                }
                else if (objPostulante.ListarTodo().Any(v => v.IdPostulante != Convert.ToInt32(collection["CodPostulante"]) && v.Nombre == collection["NombresPostulante"] && v.Apellido == collection["ApellidosPostulante"]))
                {
                    return(Json(new { success = true, responseText = "Ya existe un postulante con los mismos nombres. No se puede crear la solicitud." }, JsonRequestBehavior.AllowGet));
                }
                else if (DateTime.ParseExact(collection["FechaNacimientoPostulante"], "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture).Date < DateTime.Now.AddYears(-20).Date)
                {
                    return(Json(new { success = true, responseText = "Edad del postulante no es admitida." }, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    Apoderado apoderado = new Apoderado()
                    {
                        IdApoderado      = Convert.ToInt32(collection["CodApoderado"]),
                        Nombre           = collection["NombresApoderado"],
                        Apellido         = collection["ApellidosApoderado"],
                        VinculoApoderado = new VinculoApoderado()
                        {
                            IdVinculoApoderado = Convert.ToInt32(collection["CodVinculo"])
                        },
                        TipoDocumento = new TipoDocumento()
                        {
                            IdTipoDocumento = Convert.ToInt32(collection["CodTipoDocumentoApoderado"])
                        },
                        NumeroDocumento = collection["NumDocumentoApoderado"],
                        Ocupacion       = collection["OcupacionApoderado"],
                        Email           = collection["EmailApoderado"],
                        Telefono        = collection["TelefonoApoderado"],
                        Direccion       = collection["DireccionApoderado"]
                    };

                    Postulante postulante = new Postulante()
                    {
                        IdPostulante = Convert.ToInt32(collection["CodPostulante"]),
                        Nombre       = collection["NombresPostulante"],
                        Apellido     = collection["ApellidosPostulante"],
                        Genero       = new Genero()
                        {
                            IdGenero = Convert.ToInt32(collection["CodGenero"])
                        },
                        TipoDocumento = new TipoDocumento()
                        {
                            IdTipoDocumento = Convert.ToInt32(collection["CodTipoDocumentoPostulante"])
                        },
                        NumeroDocumento = collection["NumDocumentoPostulante"],
                        FechaNacimiento = DateTime.ParseExact(collection["FechaNacimientoPostulante"], "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture),
                        LugarNacimiento = collection["LugarNacimientoPostulante"],
                        Ciudad          = new Ciudad()
                        {
                            IdCiudad = Convert.ToInt32(collection["CodCiudad"])
                        },
                        Apoderado = apoderado
                    };

                    SolicitudAdmision solicitud = new SolicitudAdmision()
                    {
                        IdSolicitudAdmision = Convert.ToInt32(collection["CodSolicitudAdmision"]),
                        Postulante          = postulante,
                        Grado = new Grado()
                        {
                            IdGrado = Convert.ToInt32(collection["CodGrado"])
                        },
                        Sucursal = new Sucursal()
                        {
                            IdSucursal = Convert.ToInt32(collection["CodSucursal"])
                        },
                        FechaSolicitud = DateTime.Now
                    };

                    objApoderado.Modificar(apoderado);
                    objPostulante.Modificar(postulante);
                    SolicitudAdmision solicitudCreada = objSolicitud.Modificar(solicitud);

                    if (solicitudCreada.IdSolicitudAdmision > 0)
                    {
                        return(Json(new { success = true, responseText = "OK" }, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(new { success = true, responseText = "Ocurrió un incoveniente al modificar el registro" }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, responseText = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }