public List <AreaParaDDJJ104> GetAreasParaDDJJ104(int mes, int anio, int id_area, Usuario usuario) { RepositorioPersonas repoPersonas = new RepositorioPersonas(); RepositorioDeOrganigrama repoOrganigrama = new RepositorioDeOrganigrama(Conexion()); //var un_Organigrama = repoOrganigrama.GetOrganigrama(); DateTime fecha = Convert.ToDateTime("15" + "/" + mes + "/" + anio); var un_Organigrama = repoOrganigrama.GetOrganigramaSegunFechaDesde(fecha); List <AreaParaDDJJ104> areas = new List <AreaParaDDJJ104>(); List <Area> areas_completas; if (autorizador.ElUsuarioTienePermisosPara(usuario.Id, "ddjj104_mostrar_todas_las_areas")) { areas_completas = un_Organigrama.ObtenerAreas(false); } else { areas_completas = AreasConDDJJAdministradasPor(usuario); } ////FILTRO EL AREA QUE ESTOY CONSULTANDO //if (id_area > 0) //{ // areas_completas = areas_completas.FindAll(x => x.Id == id_area); //} areas_completas.ForEach(a => { if (a.Id == 0) { return; } var area = new AreaParaDDJJ104(); area.Id = a.Id; area.Nombre = a.Nombre; area.Jerarquia = a.Jerarquia; //area.DDJJ = new RepositorioDDJJ104().GetDDJJParaElArea(a).Find(x => x.Mes == mes && x.Anio == anio); List <DDJJ104_2001> listaddjj = new RepositorioDDJJ104().GetDDJJParaElArea(a, mes, anio); if (listaddjj.Count == 0) { areas.Add(area); } else { if (listaddjj.Count == 1) { area.DDJJ = listaddjj[0]; //new RepositorioDDJJ104().GetDDJJParaElArea(a).Find(x => x.Mes == mes && x.Anio == anio && x.Complementaria == 0); areas.Add(area); } else { int contador = 0; foreach (var item in listaddjj) { area = new AreaParaDDJJ104(); area.Id = a.Id; area.Nombre = a.Nombre; area.Jerarquia = a.Jerarquia; area.DDJJ = listaddjj[contador]; //new RepositorioDDJJ104().GetDDJJParaElArea(a).Find(x => x.Mes == mes && x.Anio == anio && x.Complementaria == contador); contador++; areas.Add(area); } } } //CARGO LAS AREAS QUE DEPENDEN Y LAS PERSONAS //if (id_area > 0) //{ // area.Personas.AddRange(repoPersonas.GetPersonasDelAreaParaDDJJ104(mes, anio, a)); // //AreasSinDDJJInferioresA(a).ForEach(area_dependiente => // un_Organigrama.GetAreasInferioresDelArea(a).ForEach(area_dependiente => // { // if (!area_dependiente.PresentaDDJJ) // { // var area_informal = new AreaParaDDJJ104(); // area_informal.Id = area_dependiente.Id; // area_informal.Nombre = area_dependiente.Nombre; // area_informal.Personas = repoPersonas.GetPersonasDelAreaParaDDJJ104(mes, anio, area_dependiente); // area.AreasInformalesDependientes.Add(area_informal); // } // }); // area.DDJJ = new RepositorioDDJJ104().GetDDJJParaElArea(a).Find(x => x.Mes == mes && x.Anio == anio); // var area_superior = un_Organigrama.AreaSuperiorDe(a); // area.AreaSuperior = new AreaParaDDJJ104(); // area.AreaSuperior.Id = area_superior.Id; // area.AreaSuperior.Nombre = area_superior.Nombre; // area.Direccion = a.Direccion; //} //areas.Add(area); }); return(areas); //List<AreaParaDDJJ104> lista_ddjj = new List<AreaParaDDJJ104>(); //foreach (var un_area in areas_con_ddjj) //{ // ddjj_dto = new AreaParaDDJJ104(); // //--- Cargo el areas Formal (ddjj = 1) y Obtengo las personas de esa Area // ddjj_dto.Area = un_area; // un_area.Personas = repoPersonas.GetPersonasDelAreaReducida(un_area,2); // contador_de_personas += un_area.Personas.Count(); // //--- Cargo el areas inferiores (ddjj = 0) y Obtengo las personas de esas Areas // List<Persona> personasAreaInformales = new List<Persona>(); // personasAreaInformales = repoPersonas.GetPersonasDelAreaReducida(un_area, 0); // if (personasAreaInformales.Count != 0) // { // un_area.Personas.AddRange(personasAreaInformales); // contador_de_personas += personasAreaInformales.Count(); // } // ddjj_dto.CantidadPersonas = contador_de_personas; // ddjj_dto.Mes = mes; // ddjj_dto.Anio = anio; // ddjj_dto.Estado = new RepositorioDDJJ104().GetEstadoDDJJ(ddjj_dto); // lista_ddjj.Add(ddjj_dto); // contador_de_personas = 0; //} //return lista_ddjj; }
//public int GetEstadoDDJJ(AreaParaDDJJ104 ddjj) //{ // SqlDataReader dr; // ConexionDB cn = new ConexionDB("dbo.PLA_GET_DDJJ104"); // cn.AsignarParametro("@Id_Area", ddjj.Area.Id); // cn.AsignarParametro("@Mes", ddjj.Mes); // cn.AsignarParametro("@Año", ddjj.Anio); // dr = cn.EjecutarConsulta(); // int estado = 1; // if (dr.Read()) // { // estado = dr.GetInt16(dr.GetOrdinal("Estado")); // } // cn.Desconestar(); // return estado; //} public DDJJ104_2001 GenerarDDJJ104(Usuario usuario, AreaParaDDJJ104 area, int mes, int anio, Persona[] lista_persona, int estado_guardado, int complementaria) { ConexionDB cn = new ConexionDB("dbo.PLA_ADD_DDJJ104_Cabecera"); cn.AsignarParametro("@Id_Area", area.Id); cn.AsignarParametro("@Mes", mes); cn.AsignarParametro("@Año", anio); cn.AsignarParametro("@Usuario_Generacion", usuario.Id); cn.AsignarParametro("@Estado", estado_guardado); cn.AsignarParametro("@Complementaria", complementaria); //INICIO TRANSACCION cn.BeginTransaction(); int id_ddjj_nuevo = 0; try { id_ddjj_nuevo = (int)cn.EjecutarEscalar(); if (id_ddjj_nuevo > 0) { int orden = 1; //foreach (var personas in new RepositorioPersonas().GetPersonasDelAreaParaDDJJ104(mes, anio, area )) //new Area(id_area) foreach (var personas in area.Personas) { string[] Cat_Mod = personas.Categoria.ToString().Split('#'); Persona persona_lista = lista_persona.FirstOrDefault(x => x.Id == personas.Id); cn.CrearComandoConTransaccionIniciada("dbo.PLA_ADD_DDJJ104_Detalle"); cn.AsignarParametro("@Id_DDJJ", id_ddjj_nuevo); cn.AsignarParametro("@Id_Persona", personas.Id); cn.AsignarParametro("@Orden", orden); cn.AsignarParametro("@Id_Area_Persona", personas.Area.Id); cn.AsignarParametro("@Mod_Contratacion", Cat_Mod[1].Trim()); cn.AsignarParametro("@Categoria", Cat_Mod[0].Trim()); cn.AsignarParametro("@Certificado", (persona_lista.EstaCertificadoEnLaDDJJ == true ? "S" : "N")); cn.AsignarParametro("@Hora_Desde", persona_lista.CertificaHoraDesdeDDJJ); cn.AsignarParametro("@Hora_Hasta", persona_lista.CertificaHoraHastaDDJJ); cn.AsignarParametro("@Usuario_Generacion", usuario.Id); cn.AsignarParametro("@Tipo_DDJJ", 1); cn.EjecutarSinResultado(); orden++; } foreach (var areasDependiente in area.AreasInformalesDependientes) { foreach (var personas in areasDependiente.Personas) { string[] Cat_Mod = personas.Categoria.ToString().Split('#'); Persona persona_lista = lista_persona.FirstOrDefault(x => x.Id == personas.Id); cn.CrearComandoConTransaccionIniciada("dbo.PLA_ADD_DDJJ104_Detalle"); cn.AsignarParametro("@Id_DDJJ", id_ddjj_nuevo); cn.AsignarParametro("@Id_Persona", personas.Id); cn.AsignarParametro("@Orden", orden); cn.AsignarParametro("@Id_Area_Persona", personas.Area.Id); cn.AsignarParametro("@Mod_Contratacion", Cat_Mod[1].Trim()); cn.AsignarParametro("@Categoria", Cat_Mod[0].Trim()); cn.AsignarParametro("@Certificado", (persona_lista.EstaCertificadoEnLaDDJJ == true ? "S" : "N")); cn.AsignarParametro("@Hora_Desde", persona_lista.CertificaHoraDesdeDDJJ); cn.AsignarParametro("@Hora_Hasta", persona_lista.CertificaHoraHastaDDJJ); cn.AsignarParametro("@Usuario_Generacion", usuario.Id); cn.AsignarParametro("@Tipo_DDJJ", 1); cn.EjecutarSinResultado(); orden++; } } } } catch (Exception e) { cn.RollbackTransaction(); throw; } cn.CommitTransaction(); cn.Desconestar(); var ddjj = new DDJJ104_2001(); ddjj.Anio = anio; ddjj.Mes = mes; ddjj.Id = id_ddjj_nuevo; ddjj.FechaGeneracion = DateTime.Now; return(ddjj); }
public List <AreaParaDDJJ104> GetAreasParaDDJJ104InferioresA(int mes, int anio, int id_area, int complementaria, Usuario usuario) { RepositorioPersonas repoPersonas = new RepositorioPersonas(); RepositorioDeOrganigrama repoOrganigrama = new RepositorioDeOrganigrama(Conexion()); List <Area> areas_completas = repoOrganigrama.GetAreasQueDependientesDe(id_area); List <AreaParaDDJJ104> areas = new List <AreaParaDDJJ104>(); areas_completas.ForEach(a => { if (a.Id == 0) { return; } if (a.PresentaDDJJ) { var area = new AreaParaDDJJ104(); area.Id = a.Id; area.Nombre = a.Nombre; area.Personas.AddRange(repoPersonas.GetPersonasDelAreaParaDDJJ104(mes, anio, a, complementaria).FindAll(x => x.Area.Id == id_area)); if (area.Personas != null && area.Personas.Count > 0 && area.Personas[0].Esta_Cargada == 1) { //CARGO LAS AREAS QUE DEPENDEN Y LAS PERSONAS areas_completas.ForEach(area_dependiente => { if (!area_dependiente.PresentaDDJJ) { var area_informal = new AreaParaDDJJ104(); area_informal.Id = area_dependiente.Id; area_informal.Nombre = area_dependiente.Nombre; area_informal.Personas = repoPersonas.GetPersonasDelAreaParaDDJJ104(mes, anio, a, complementaria).FindAll(x => x.Area.Id == area_informal.Id); if (area_informal.Personas.Count > 0) { area.AreasInformalesDependientes.Add(area_informal); } } }); area.DDJJ = new RepositorioDDJJ104().GetDDJJParaElArea(a, mes, anio).Find(x => x.Mes == mes && x.Anio == anio); } else { //CARGO LAS AREAS QUE DEPENDEN Y LAS PERSONAS areas_completas.ForEach(area_dependiente => { if (!area_dependiente.PresentaDDJJ) { var area_informal = new AreaParaDDJJ104(); area_informal.Id = area_dependiente.Id; area_informal.Nombre = area_dependiente.Nombre; area_informal.Personas = repoPersonas.GetPersonasDelAreaParaDDJJ104(mes, anio, area_dependiente, complementaria).FindAll(x => x.Area.Id == area_informal.Id); if (area_informal.Personas.Count > 0) { area.AreasInformalesDependientes.Add(area_informal); } } }); area.DDJJ = new RepositorioDDJJ104().GetDDJJParaElArea(a, mes, anio).Find(x => x.Mes == mes && x.Anio == anio); } //var area_superior = un_Organigrama.AreaSuperiorDe(a); //area.AreaSuperior = new AreaParaDDJJ104(); //area.AreaSuperior.Id = area_superior.Id; //area.AreaSuperior.Nombre = area_superior.Nombre; //area.Direccion = a.Direccion; areas.Add(area); } }); return(areas); }