public void Add(Portafolio myObject) { try { var systemDate = DateTime.Now; myObject.NumDocument = GetId(systemDate.Year, systemDate.Month); myObject.CreateDate = systemDate; myObject.EditDate = systemDate; myObject.EstadoId = (int)Enums.EstadoType.EnEjecucion; var proyectosIdList = myObject.Proyectos?.Select(x => x.Id).ToList() ?? new List <int>(); myObject.Proyectos = null; var programasIdList = myObject.Programas?.Select(x => x.Id).ToList() ?? new List <int>(); myObject.Programas = null; //GET PROYECTOS AND PROGRAMAS var proyectos = new BuProyecto().GetMany(p => proyectosIdList.Contains(p.Id)); var programas = new BuPrograma().GetMany(p => programasIdList.Contains(p.Id)); //GET TIPODURACIONID myObject.TipoDuracionId = proyectos?.First().TipoDuracionId ?? programas.First().TipoDuracionId; //GET FIRST DATE var fechas = new List <DateTime>(); if (proyectos != null) { fechas.AddRange(proyectos.Select(x => x.StarDate).Distinct()); } if (programas != null) { fechas.AddRange(programas.Select(x => x.StarDate).Distinct()); } myObject.StarDate = fechas.OrderBy(x => x).First(); //GET LAST DATE fechas = new List <DateTime>(); if (proyectos != null) { fechas.AddRange(proyectos.Select(x => x.FinalDate).Distinct()); } if (programas != null) { fechas.AddRange(programas.Select(x => x.FinalDate).Distinct()); } myObject.FinalDate = fechas.OrderBy(x => x).Last(); //GET DURACION myObject.Duracion = (myObject.FinalDate - myObject.StarDate).Days; _repository.Add(myObject); _unitOfWork.Commit(); var id = Get(x => x.NumDocument.Equals(myObject.NumDocument)).Id; //UPDATE PROYECTOS new BuProyecto().UpdatePortafolioId(id, proyectosIdList); //UPDATE PROGRAMAS new BuPrograma().UpdatePortafolioId(id, programasIdList); } catch (Exception ex) { throw new Exception(ex.Message); } }
public void Update(Portafolio myObject) { try { var systemDate = DateTime.Now; myObject.EditDate = systemDate; var proyectosIdList = myObject.Proyectos?.Select(x => x.Id).ToList() ?? new List <int>(); myObject.Proyectos = null; var programasIdList = myObject.Programas?.Select(x => x.Id).ToList() ?? new List <int>(); myObject.Programas = null; //GET PROYECTOS AND PROGRAMAS var proyectos = new BuProyecto().GetMany(p => proyectosIdList.Contains(p.Id)); var programas = new BuPrograma().GetMany(p => programasIdList.Contains(p.Id)); //GET TIPODURACIONID myObject.TipoDuracionId = proyectos?.First().TipoDuracionId ?? programas.First().TipoDuracionId; //GET FIRST DATE var fechas = new List <DateTime>(); if (proyectos != null) { fechas.AddRange(proyectos.Select(x => x.StarDate).Distinct()); } if (programas != null) { fechas.AddRange(programas.Select(x => x.StarDate).Distinct()); } myObject.StarDate = fechas.OrderBy(x => x).First(); //GET LAST DATE fechas = new List <DateTime>(); if (proyectos != null) { fechas.AddRange(proyectos.Select(x => x.FinalDate).Distinct()); } if (programas != null) { fechas.AddRange(programas.Select(x => x.FinalDate).Distinct()); } myObject.FinalDate = fechas.OrderBy(x => x).Last(); //GET DURACION myObject.Duracion = (myObject.FinalDate - myObject.StarDate).Days; myObject.Documentos = new BuDocumento().GetMany(x => x.PortafolioId.HasValue && x.PortafolioId.Value.Equals(myObject.Id)).ToList(); var documentosIdList = myObject.Documentos?.Select(x => x.Id).ToList(); myObject.Documentos = null; _repository.Update(myObject); _unitOfWork.Commit(); //PROYECTOS var buProyecto = new BuProyecto(); buProyecto.ClearPortafolioId(myObject.Id); buProyecto.UpdatePortafolioId(myObject.Id, proyectosIdList); //PROGRAMAS var buPrograma = new BuPrograma(); buPrograma.ClearPortafolioId(myObject.Id); buPrograma.UpdatePortafolioId(myObject.Id, programasIdList); //DOCUMENTOS var buDocumento = new BuDocumento(); buDocumento.ClearPortafolioId(myObject.Id); buDocumento.UpdatePortafolioId(myObject.Id, documentosIdList); } catch (Exception ex) { throw new Exception(ex.Message); } }