예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }