public IEnumerable getRazaCount(DateTime?fecha_start, DateTime?fecha_fin) { SCPMdbEntities db = new SCPMdbEntities(); var razas = db.SCPM_RAZAS.ToList(); var _res = new Dictionary <decimal, PersonaRaza>(); foreach (var item in razas) { _res.Add(item.RAZ_ID, new PersonaRaza() { count = 0, raza = item.RAZ_NOM }); } var personas = db.SCPM_PERSONALES.ToList(); foreach (var p in personas) { p.SCPM_PUESTO_HIST.Load(); if (p.SCPM_PUESTO_HIST.Count > 0) { SCPM_PUESTO_HIST lastCargo = p.SCPM_PUESTO_HIST.OrderBy(c => c.PST_HIS_FEC_INI).FirstOrDefault(); p.SCPM_RAZASReference.Load(); if ((lastCargo.PST_HIS_FEC_INI <= fecha_fin) && (fecha_start == null || lastCargo.PST_HIS_FEC_INI >= fecha_start)) { _res[p.SCPM_RAZAS.RAZ_ID].count++; } } } return(_res.Values.ToList()); }
public List <SCPM_CARGOS> getFreeCargosByAreaID(int newx, int per_id) { List <SCPM_CARGOS> _res = new List <SCPM_CARGOS>(); var cargosx = (from a in db.SCPM_CARGOS.Include("SCPM_DENOMINACIONES") where a.SCPM_AREAS.ARE_COD == newx select a).ToList(); foreach (var puesto in cargosx) { puesto.SCPM_PUESTO_HIST.Load(); SCPM_PUESTO_HIST lastCargo = puesto.SCPM_PUESTO_HIST.Count > 0 ? puesto.SCPM_PUESTO_HIST.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault() : puesto.SCPM_PUESTO_HIST.FirstOrDefault(); if (lastCargo != null && (lastCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastCargo.PST_HIS_FEC_FIN) <= 0)) {//cargo tiene un funcionario actualmente lastCargo.SCPM_PERSONALESReference.Load(); if (lastCargo.SCPM_PERSONALES.PER_ID == per_id) { _res.Add(puesto); } } else {//cargo libre _res.Add(puesto); } } return(_res); }
public IEnumerable getPersonasDiscapacidadCount(DateTime?fecha_start, DateTime?fecha_fin) { SCPMdbEntities db = new SCPMdbEntities(); var razas = db.SCPM_TIPO_DISCAPACIDADES.ToList(); var _res = new Dictionary <decimal, PersonaRaza>(); _res.Add(0, new PersonaRaza() { count = 0, raza = "Sin discapacidad" }); _res.Add(1, new PersonaRaza() { count = 0, raza = "Con discapacidad" }); var personas = db.SCPM_PERSONALES.ToList(); foreach (var p in personas) { p.SCPM_PUESTO_HIST.Load(); if (p.SCPM_PUESTO_HIST.Count > 0) { SCPM_PUESTO_HIST lastCargo = p.SCPM_PUESTO_HIST.OrderBy(c => c.PST_HIS_FEC_INI).FirstOrDefault(); if ((lastCargo.PST_HIS_FEC_INI <= fecha_fin) && (fecha_start == null || lastCargo.PST_HIS_FEC_INI >= fecha_start)) { p.SCPM_DISCAPACIDADES.Load(); var dis = p.SCPM_DISCAPACIDADES.ToList(); if (dis.Count > 0) { _res[1].count++; } else { _res[0].count++; } } } } return(_res.Values.ToList()); }
public IEnumerable getGeneroCount(DateTime?fecha_start, DateTime?fecha_fin) { SCPMdbEntities db = new SCPMdbEntities(); var _res = new Dictionary <decimal, PersonaRaza>(); _res.Add(0, new PersonaRaza() { count = 0, raza = "Hombre" }); _res.Add(1, new PersonaRaza() { count = 0, raza = "Mujer" }); var personas = db.SCPM_PERSONALES.ToList(); foreach (var p in personas) { p.SCPM_PUESTO_HIST.Load(); if (p.SCPM_PUESTO_HIST.Count > 0) { SCPM_PUESTO_HIST lastCargo = p.SCPM_PUESTO_HIST.OrderBy(c => c.PST_HIS_FEC_INI).FirstOrDefault(); if ((lastCargo.PST_HIS_FEC_INI <= fecha_fin) && (fecha_start == null || lastCargo.PST_HIS_FEC_INI >= fecha_start)) { _res[p.PER_GEN.Value ? 0 : 1].count++; } } } return(_res.Values.ToList()); }
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { try { var res = persvm.getPersonasByID(Convert.ToInt32(e.CommandArgument.ToString())); if (res.Count > 0) { SCPM_PERSONALES persona = res.First(); current_persona_id.Value = persona.PER_ID.ToString(); //fillCargos(persona.PER_ID.ToString()); //historial puestos persona.SCPM_PUESTO_HIST.Load(); SCPM_PUESTO_HIST lastCargo = persona.SCPM_PUESTO_HIST.Count > 0 ? persona.SCPM_PUESTO_HIST.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault() : persona.SCPM_PUESTO_HIST.FirstOrDefault(); comboUnidad.Enabled = true; ComboArea.Enabled = true; comboRelacionLab.Enabled = true; comboCargo.Enabled = true; inFechaStart.Enabled = true; inFechaEnd.Enabled = true; search_res2.InnerHtml = String.Format("{0} {1} {2} {3}", persona.PER_APE_PAT, persona.PER_APE_MAT, persona.PER_NOM1, persona.PER_NOM2); if (lastCargo != null && (lastCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastCargo.PST_HIS_FEC_FIN) <= 0)) { lastCargo.SCPM_CARGOSReference.Load(); lastCargo.SCPM_RELACIONES_LABORALESReference.Load(); lastCargo.SCPM_CARGOS.SCPM_AREASReference.Load(); lastCargo.SCPM_CARGOS.SCPM_AREAS.SCPM_UNIDADReference.Load(); current_cargo_id.Value = lastCargo.SCPM_CARGOS.CAR_ID.ToString(); puestoActual.InnerHtml = String.Format("Puesto Actual: {0} / {1} / {2} / {3} <br/> <span class='mif-calendar'></span> {4}/{5}", lastCargo.SCPM_CARGOS.SCPM_AREAS.SCPM_UNIDAD.UNI_NOM, lastCargo.SCPM_CARGOS.SCPM_AREAS.ARE_NOM, lastCargo.SCPM_CARGOS.CAR_NOM, lastCargo.SCPM_RELACIONES_LABORALES.REL_LAB_NOM, lastCargo.PST_HIS_FEC_INI.Value.ToString("yyyy-MM-dd"), lastCargo.PST_HIS_FEC_FIN == null ? "actualidad" : lastCargo.PST_HIS_FEC_FIN.Value.ToString("yyyy-MM-dd")); //jefe JefeModel jefe = psvm.getJefeOfAreaId(Convert.ToInt32(ComboArea.SelectedValue), HelperUtil.cargoJefeArea.Split(',').Contains(lastCargo.SCPM_CARGOS.CAR_NOM)); puestoActual.InnerHtml += String.Format("<br/><br/><strong>{0}<strong>: {1}", jefe.Cargo, jefe.Nombre); //fin jefe comboUnidad.SelectedValue = lastCargo.SCPM_CARGOS.SCPM_AREAS.SCPM_UNIDAD.UNI_COD.ToString(); fillAreas(); ComboArea.SelectedValue = lastCargo.SCPM_CARGOS.SCPM_AREAS.ARE_COD.ToString(); fillCargos(persona.PER_ID.ToString()); comboCargo.SelectedValue = lastCargo.SCPM_CARGOS.CAR_ID.ToString(); comboRelacionLab.SelectedValue = lastCargo.SCPM_RELACIONES_LABORALES.REL_LAB_ID.ToString(); inFechaStart.Text = lastCargo.PST_HIS_FEC_INI.Value.ToString("yyyy-MM-dd"); inFechaEnd.Text = lastCargo.PST_HIS_FEC_FIN == null ? "" : lastCargo.PST_HIS_FEC_FIN.Value.ToString("yyyy-MM-dd"); } else { puestoActual.InnerHtml = String.Format("Puesto Actual: {0}", "Ninguno"); current_cargo_id.Value = "dcm"; HelperUtil.showNotifi("Funcionario actualmente sin puesto de trabajo"); fillCargos(persona.PER_ID.ToString()); } } else { comboUnidad.Enabled = false; ComboArea.Enabled = false; comboRelacionLab.Enabled = false; comboCargo.Enabled = false; inFechaStart.Enabled = false; inFechaEnd.Enabled = false; search_res.InnerHtml = "No se encontro funcionario"; puestoActual.InnerHtml = "Puesto Actual: Ninguno"; current_persona_id.Value = "dcm"; current_cargo_id.Value = "dcm"; HelperUtil.showNotifi("No se encontro funcionario"); } } catch (Exception ex) { HelperUtil.showNotifi("No se encontro funcionario"); } }
private void fillData(int cargo_id) { try { var puesto = psvm.getCargoByID(cargo_id); if (puesto != null) { current_puesto_id.Value = puesto.CAR_ID.ToString(); ViewDetail(true); fillPersonas(); //puesto detall puesto.SCPM_AREASReference.Load(); puesto.SCPM_AREAS.SCPM_UNIDADReference.Load(); puesto.SCPM_DENOMINACIONESReference.Load(); unidadLabel.InnerHtml = puesto.SCPM_AREAS.SCPM_UNIDAD.UNI_NOM; areaLabel.InnerHtml = puesto.SCPM_AREAS.ARE_NOM; cargoLabel.InnerHtml = puesto.CAR_NOM; denominacionLabel.InnerHtml = puesto.SCPM_DENOMINACIONES.DEN_NOM; //puesto funcionario puesto.SCPM_PUESTO_HIST.Load(); SCPM_PUESTO_HIST lastCargo = puesto.SCPM_PUESTO_HIST.Count > 0 ? puesto.SCPM_PUESTO_HIST.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault() : puesto.SCPM_PUESTO_HIST.FirstOrDefault(); if (lastCargo != null && (lastCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastCargo.PST_HIS_FEC_FIN) <= 0)) {//cargo tiene un funcionario actualmente lastCargo.SCPM_PERSONALESReference.Load(); SCPM_PERSONALES persona = lastCargo.SCPM_PERSONALES; personaLabel.InnerHtml = String.Format("{0} {1} {2} {3}", persona.PER_APE_PAT, persona.PER_APE_MAT, persona.PER_NOM1, persona.PER_NOM2); HelperUtil.showNotifi("Cargo ocupado<br/>" + personaLabel.InnerHtml); lastCargo.SCPM_RELACIONES_LABORALESReference.Load(); relLabLabel.InnerHtml = lastCargo.SCPM_RELACIONES_LABORALES.REL_LAB_NOM; current_persona_id.Value = persona.PER_ID.ToString();; } else {//cargo no ocupado HelperUtil.showNotifi("Cargo no ocupado"); relLabLabel.InnerHtml = "ninguno"; personaLabel.InnerHtml = "ninguno"; current_persona_id.Value = "dcm"; } //puesto subrogado/encargo puesto.SCPM_SUBROGA_HIST.Load(); var q = puesto.SCPM_SUBROGA_HIST.ToList(); SCPM_SUBROGA_HIST lastSugroga = q.Count > 0 ? q.OrderByDescending(c => c.SUB_HIS_FEC_INI).FirstOrDefault() : q.FirstOrDefault(); if (lastSugroga != null && (lastSugroga.SUB_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastSugroga.SUB_HIS_FEC_FIN) <= 0)) {//puesto esta subrogado o encargado actualmente combo_tipo.SelectedValue = lastSugroga.SUB_HIS_IS_ENCARGO.Value ? "2" : "1"; lastSugroga.SCPM_PERSONALESReference.Load(); comboPersona.SelectedValue = lastSugroga.SCPM_PERSONALES.PER_ID.ToString(); HelperUtil.showNotifi("Cargo actualmente " + (lastSugroga.SUB_HIS_IS_ENCARGO.Value ? "Encargado" : "Subrogado")); current_subroga_id.Value = lastSugroga.SCPM_PERSONALES.PER_ID.ToString(); current_tipo_id.Value = lastSugroga.SUB_HIS_IS_ENCARGO.Value ? "2" : "1"; sub_hist_id.Value = lastSugroga.SUB_HIS_ID.ToString(); inFechaStart.Text = lastSugroga.SUB_HIS_FEC_INI.Value.ToString("yyyy-MM-dd"); inFechaEnd.Text = (lastSugroga.SUB_HIS_FEC_FIN == null ? "" : lastSugroga.SUB_HIS_FEC_FIN.Value.ToString("yyyy-MM-dd")); subrogaPerLabel.InnerHtml = String.Format("{0} {1} {2} {3}", lastSugroga.SCPM_PERSONALES.PER_APE_PAT, lastSugroga.SCPM_PERSONALES.PER_APE_MAT, lastSugroga.SCPM_PERSONALES.PER_NOM1, lastSugroga.SCPM_PERSONALES.PER_NOM2); } else {//puesto no encargado subrogado current_subroga_id.Value = "dcm"; sub_hist_id.Value = "dcm"; subrogaPerLabel.InnerHtml = "ninguno"; current_tipo_id.Value = "dcm"; inFechaStart.Text = DateTime.Now.ToString("yyyy-MM-dd"); HelperUtil.showNotifi("Puesto no subrogado"); } } else { ViewDetail(false); HelperUtil.showNotifi("Puesto no encontrado"); current_puesto_id.Value = "dcm"; } } catch (Exception ex) { ViewDetail(false); HelperUtil.showNotifi("Error: Puesto no encontrado"); current_subroga_id.Value = "dcm"; sub_hist_id.Value = "dcm"; subrogaPerLabel.InnerHtml = "ninguno"; current_tipo_id.Value = "dcm"; inFechaStart.Text = DateTime.Now.ToString("yyyy-MM-dd"); } }
public void AddToSCPM_PUESTO_HIST(SCPM_PUESTO_HIST sCPM_PUESTO_HIST) { base.AddObject("SCPM_PUESTO_HIST", sCPM_PUESTO_HIST); }
public static SCPM_PUESTO_HIST CreateSCPM_PUESTO_HIST(decimal pST_HIS_ID) { SCPM_PUESTO_HIST sCPM_PUESTO_HIST = new SCPM_PUESTO_HIST(); sCPM_PUESTO_HIST.PST_HIS_ID = pST_HIS_ID; return sCPM_PUESTO_HIST; }
public JefeModel getJefeOfAreaId(int area_cod, bool searchJefeUnidad) { SCPM_AREAS area = (from a in db.SCPM_AREAS where a.ARE_COD == area_cod select a).FirstOrDefault(); area.SCPM_UNIDADReference.Load(); SCPM_UNIDAD unidad = area.SCPM_UNIDAD; //determino si busco un cargo q sea jefe de undad o area List <String> cargo_jefe_nombre; string jefe_tipo; if (area.ARE_NOM.Equals(unidad.UNI_NOM, StringComparison.InvariantCultureIgnoreCase) || searchJefeUnidad) {//si el nombre del area es igual al nombre de la unidad, busco al jefe de la unidad cargo_jefe_nombre = HelperUtil.cargoJefeUnidad.Split(',').ToList(); jefe_tipo = "unidad"; } else {//si el nombre del area distinto al nombre de la unidad, busco al jefe del area cargo_jefe_nombre = HelperUtil.cargoJefeArea.Split(',').ToList(); jefe_tipo = "area"; } //obtengo los cargos q posee esta area, y cojo solo el q tiene el nombre de cargo jefe buscado (determinado en el paso anterior) area.SCPM_CARGOS.Load(); SCPM_CARGOS cargo_jefe = (from c in area.SCPM_CARGOS where cargo_jefe_nombre.Contains(c.CAR_NOM.ToUpper()) select c).FirstOrDefault(); if (cargo_jefe == null) { HelperUtil.showNotifi(String.Format("debe crear el cargo de {0} en esta {1}", String.Join(";", cargo_jefe_nombre.ToArray()), jefe_tipo)); return(new JefeModel() { Cargo = String.Join(",", cargo_jefe_nombre.ToArray()), Nombre = "ninguno, cargo no creado" });; } //traigo el historial de ese cargo de jefe especifico cargo_jefe.SCPM_PUESTO_HIST.Load(); SCPM_PUESTO_HIST lastCargo = cargo_jefe.SCPM_PUESTO_HIST.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault(); if (lastCargo != null && (lastCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastCargo.PST_HIS_FEC_FIN) <= 0)) {//el cargo esta actualmente ocupado, tiene jefe lastCargo.SCPM_PERSONALESReference.Load(); SCPM_PERSONALES persona = lastCargo.SCPM_PERSONALES; return(new JefeModel() { Cargo = cargo_jefe.CAR_NOM, Nombre = String.Format("{0} {1} {2} {3}", persona.PER_APE_PAT, persona.PER_APE_MAT, persona.PER_NOM1, persona.PER_NOM2) }); } else {//no tiene jefe HelperUtil.showNotifi(jefe_tipo + " sin " + cargo_jefe.CAR_NOM); return(new JefeModel() { Cargo = cargo_jefe.CAR_NOM, Nombre = "ninguno" }); } }
private bool isRangoFechaCargoValid(List <SCPM_PUESTO_HIST> historial_cargos_persona, List <SCPM_PUESTO_HIST> historial_cargos_cargo_id, DateTime startB, DateTime?endB, SCPM_PUESTO_HIST lastCargo) { foreach (var item in historial_cargos_persona) { if (lastCargo == null || item.PST_HIS_ID != lastCargo.PST_HIS_ID) { var startA = item.PST_HIS_FEC_INI.Value; var endA = item.PST_HIS_FEC_FIN; if (endA == null && endB == null) { if (startA > startB) { endA = startA; endB = startA; } else { endA = startB; endB = startB; } } if ((startA <= endB) && (endA >= startB)) { HelperUtil.showNotifi("persona ya posee un cargo en esas fechas"); return(false); } } } foreach (var item in historial_cargos_cargo_id) { if (lastCargo == null || item.PST_HIS_ID != lastCargo.PST_HIS_ID) { var startA = item.PST_HIS_FEC_INI.Value; var endA = item.PST_HIS_FEC_FIN; if (endA == null && endB == null) { if (startA > startB) { endA = startA; endB = startA; } else { endA = startB; endB = startB; } } if ((startA <= endB) && (endA >= startB)) { HelperUtil.showNotifi("cargo ya posee un funcionario en esas fechas"); return(false); } } } return(true); }
public bool addCargoHistorial(SCPM_PUESTO_HIST historial, int per_id, int cargo_id, int rel_lab_id) { //compruebo si persona ya tiene un cargo activo var historial_cargos_persona = (from h in db.SCPM_PUESTO_HIST.Include("SCPM_PERSONALES") where h.SCPM_PERSONALES.PER_ID == per_id select h).ToList(); SCPM_PUESTO_HIST currentCargo = historial_cargos_persona.Count > 0 ? historial_cargos_persona.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault() : historial_cargos_persona.FirstOrDefault(); if (currentCargo != null) { currentCargo.SCPM_CARGOSReference.Load(); currentCargo.SCPM_RELACIONES_LABORALESReference.Load(); } if (currentCargo != null && currentCargo.SCPM_CARGOS.CAR_ID != cargo_id && (currentCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(currentCargo.PST_HIS_FEC_FIN) <= 0)) { HelperUtil.showNotifi("persona ya tiene un cargo activo, finalicelo para poder asignarlo a otro cargo"); return(false); } // var historial_cargos_cargo_id = (from h in db.SCPM_PUESTO_HIST.Include("SCPM_CARGOS") where h.SCPM_CARGOS.CAR_ID == cargo_id select h).ToList(); var nowTime = DateTime.Now; SCPM_PUESTO_HIST lastCargo = historial_cargos_cargo_id.Count > 0 ? historial_cargos_cargo_id.OrderByDescending(c => c.PST_HIS_FEC_INI).FirstOrDefault() : historial_cargos_cargo_id.FirstOrDefault(); if (lastCargo != null && (lastCargo.PST_HIS_FEC_FIN == null || DateTime.Now.CompareTo(lastCargo.PST_HIS_FEC_FIN) <= 0)) {//el cargo esta actualmente ocupado lastCargo.SCPM_PERSONALESReference.Load(); lastCargo.SCPM_RELACIONES_LABORALESReference.Load(); if (lastCargo.SCPM_PERSONALES.PER_ID != per_id) { //el cargo esta ocupado por otra persona HelperUtil.showNotifi("el cargo esta ocupado por otra persona"); return(false); } else if (lastCargo.SCPM_RELACIONES_LABORALES.REL_LAB_ID == rel_lab_id) { // el cargo esta ocupado por la misma persona y relacion laboral es la misma solo se actualizara sus campos //fecha fin no puede ser menor a fecha inicio if (historial.PST_HIS_FEC_FIN != null && historial.PST_HIS_FEC_INI.Value.CompareTo(historial.PST_HIS_FEC_FIN) > 0) { HelperUtil.showNotifi("fecha inicio no puede ser mayor que final"); return(false); } //checa si rango de fecha no overlap con alguno del historial del cargo o la persona if (!isRangoFechaCargoValid(historial_cargos_persona, historial_cargos_cargo_id, historial.PST_HIS_FEC_INI.Value, historial.PST_HIS_FEC_FIN, lastCargo)) { return(false); } lastCargo.PST_HIS_FEC_FIN = historial.PST_HIS_FEC_FIN; lastCargo.PST_HIS_FEC_INI = historial.PST_HIS_FEC_INI; db.SaveChanges(); HelperUtil.showNotifi("Solo fecha final actualizada"); return(true); } else { // el cargo esta ocupado por la misma persona y relacion laboral no es la misma if (historial.PST_HIS_FEC_FIN == null || historial.PST_HIS_FEC_FIN.Value.CompareTo(nowTime) > 0) { //quiere cambiar de relacion laboral al cargo que actualmente tiene, se finaliza este historial y añade otro con la nueva relacion laboral //entonces fecha inicio del nuevo historial debe ser mayor a fecha inicio del cargo actual if (historial.PST_HIS_FEC_INI.Value.CompareTo(lastCargo.PST_HIS_FEC_INI.Value) < 0) { HelperUtil.showNotifi("Fecha inico de la nueva relacion laboral debe ser mayor a fecha inicio de la actual relacion laboral."); return(false); } //fecha fin no puede ser menor a fecha inicio if (historial.PST_HIS_FEC_FIN != null && nowTime.CompareTo(historial.PST_HIS_FEC_FIN) > 0) { HelperUtil.showNotifi("fecha inicio no puede ser mayor que final"); return(false); } lastCargo.PST_HIS_FEC_FIN = nowTime; historial.PST_HIS_FEC_INI = nowTime; db.SaveChanges(); HelperUtil.showNotifi("Relacion laboral anterior finalizada."); } else { //el cargo esta actualmente ocupado se desea añadir un historial antiguo //entonces fecha fin debe ser menor a fecha inicio del cargo actual if (historial.PST_HIS_FEC_FIN.Value.CompareTo(lastCargo.PST_HIS_FEC_INI) > 0) { HelperUtil.showNotifi("Intenta añadir un historial antiguo. fecha final debe ser menor a fecha inicial del cargo actual"); return(false); } //fecha fin no puede ser menor a fecha inicio if (historial.PST_HIS_FEC_INI.Value.CompareTo(historial.PST_HIS_FEC_FIN) > 0) { HelperUtil.showNotifi("fecha inicio no puede ser mayor que final"); return(false); } //checa si rango de fecha no overlap con alguno del historial del cargo o la persona if (!isRangoFechaCargoValid(historial_cargos_persona, historial_cargos_cargo_id, historial.PST_HIS_FEC_INI.Value, historial.PST_HIS_FEC_FIN, null)) { return(false); } } //add new relacion historial.SCPM_PERSONALES = getPersonasByID(per_id).ToList().First(); historial.SCPM_RELACIONES_LABORALES = getRalacionLabByID(rel_lab_id); historial.SCPM_CARGOS = getCargoByID(cargo_id); db.AddToSCPM_PUESTO_HIST(historial); //save db.SaveChanges(); HelperUtil.showNotifi("Nueva Relacion laboral añadida."); return(true); } } else {//el cargo no esta ocupado actualmente, se procede a añadir el historial nuevo //fecha fin no puede ser menor a fecha inicio if (historial.PST_HIS_FEC_FIN != null && historial.PST_HIS_FEC_INI.Value.CompareTo(historial.PST_HIS_FEC_FIN) > 0) { HelperUtil.showNotifi("fecha inicio no puede ser mayor que final"); return(false); } //checa si rango de fecha no overlap con alguno del historial del cargo o la persona if (!isRangoFechaCargoValid(historial_cargos_persona, historial_cargos_cargo_id, historial.PST_HIS_FEC_INI.Value, historial.PST_HIS_FEC_FIN, null)) { return(false); } //add new relacion historial.SCPM_PERSONALES = getPersonasByID(per_id).ToList().First(); historial.SCPM_RELACIONES_LABORALES = getRalacionLabByID(rel_lab_id); historial.SCPM_CARGOS = getCargoByID(cargo_id); db.AddToSCPM_PUESTO_HIST(historial); //save db.SaveChanges(); HelperUtil.showNotifi("Nueva Relacion laboral añadida."); return(true); } }