public SaveGrupoNecesidadResponse SaveGrupoNecesidad(CreateEditSoloGrupoNecesidadViewModel viewModel, int?centro)
        {
            var            response = new SaveGrupoNecesidadResponse();
            GrupoNecesidad grupo    = new GrupoNecesidad();

            try
            {
                if (viewModel.GrupoNecesidadId == null)
                {
                    grupo.UpdateGrupoNecesidad(viewModel);
                    _grupoNecesidadRepository.Create(grupo);
                }
                else
                {
                    var grupoActual = _grupoNecesidadRepository.GetOne(x => x.GrupoNecesidadId == viewModel.GrupoNecesidadId.Value);
                    grupoActual.UpdateGrupoNecesidad(viewModel);
                    _grupoNecesidadRepository.Update(grupoActual);
                }

                response.GrupoNecesidadId = _grupoNecesidadRepository.GetOne(x => x.Nombre == viewModel.NombreGrupo &&
                                                                             x.IsActivo && !x.GrupoCerrado && (!(x.Usuario.CentroId.HasValue) || x.Usuario.CentroId == centro.Value)).GrupoNecesidadId;
                response.IsValid = true;
            }
            catch (Exception ex)
            {
                response.ErrorMessage = ex.Message;
                response.IsValid      = false;
            }
            return(response);
        }
 public static void UpdateGrupoNecesidad(this GrupoNecesidad grupoNecesidad, CreateEditSoloGrupoNecesidadViewModel grupoNecesidadVM)
 {
     if (grupoNecesidadVM.GrupoNecesidadId.HasValue)
     {
         grupoNecesidad.ModifiedBy       = ModifiableEntityHelper.GetCurrentUser();
         grupoNecesidad.Modified         = ModifiableEntityHelper.GetCurrentDate();
         grupoNecesidad.GrupoNecesidadId = grupoNecesidadVM.GrupoNecesidadId.Value;
     }
     else
     {
         grupoNecesidad.CreatedBy = ModifiableEntityHelper.GetCurrentUser();
         grupoNecesidad.Created   = ModifiableEntityHelper.GetCurrentDate();
     }
     grupoNecesidad.Nombre       = grupoNecesidadVM.NombreGrupo;
     grupoNecesidad.Descripcion  = grupoNecesidadVM.DescripcionGrupo;
     grupoNecesidad.GrupoCerrado = grupoNecesidadVM.EstadoGrupo;
     grupoNecesidad.IsActivo     = true;
 }
        public static CreateEditGrupoNecesidadViewModel ConvertToCreateEditGrupoNecesidadViewModel(GrupoNecesidad grupo, IEnumerable <Necesidad> necesidades)
        {
            var grupoVM        = new CreateEditGrupoNecesidadViewModel();
            var necesidadComun = necesidades.FirstOrDefault();

            grupoVM.ListaNecesidades          = necesidades.Select(x => x.ConvertToCreateEditNecesidadViewModel()).ToList();
            grupoVM.NombreGrupo               = grupo.Nombre;
            grupoVM.DescripcionGrupo          = grupo.Descripcion;
            grupoVM.GrupoNecesidadId          = grupo.GrupoNecesidadId;
            grupoVM.EstadoGrupo               = grupo.GrupoCerrado;
            grupoVM.CentroId                  = necesidadComun.CentroId;
            grupoVM.ClienteId                 = necesidadComun.Proyecto.ClienteId;
            grupoVM.DetalleTecnologia         = necesidadComun.Observaciones;
            grupoVM.DisponibilidadReubicacion = (necesidadComun.CambioResidencia == true);
            grupoVM.DisponibilidadViajes      = (necesidadComun.DisponibilidadViaje == true);
            grupoVM.FechaSolicitud            = necesidadComun.FechaSolicitud;
            grupoVM.MesesAsignacionId         = necesidadComun.MesesAsignacionId;
            grupoVM.NecesidadIdioma           = (necesidadComun.NecesidadIdioma == true);
            grupoVM.OficinaId                 = necesidadComun.OficinaId;
            grupoVM.ProyectoId                = necesidadComun.ProyectoId;
            grupoVM.SectorId                  = necesidadComun.SectorId;
            grupoVM.TipoServicioId            = (necesidadComun.Proyecto.ServicioId.HasValue) ? necesidadComun.Proyecto.ServicioId.Value : 0;
            grupoVM.Activo = grupo.IsActivo;
            return(grupoVM);
        }
        private static GrupoNecesidadesRowViewModel ConvertToGrupoNecesidadRowViewModel(this GrupoNecesidad grupoNecesidad)
        {
            GrupoNecesidadesRowViewModel grupoNecesidadRowViewModel = new GrupoNecesidadesRowViewModel();
            var numeroNecesidadesAsignadas   = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId != (int)EstadoNecesidadEnum.Cancelado);
            var numeroNecesidadesAbiertas    = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Abierta);
            var numeroNecesidadesPreasiganas = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Preasignada);
            var numeroNecesidadesCerradas    = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Cerrada);

            grupoNecesidadRowViewModel.GrupoNecesidadId        = grupoNecesidad.GrupoNecesidadId;
            grupoNecesidadRowViewModel.NombreGrupo             = grupoNecesidad.Nombre;
            grupoNecesidadRowViewModel.NecesidadesAsignadas    = numeroNecesidadesAsignadas;
            grupoNecesidadRowViewModel.NecesidadesAbiertas     = numeroNecesidadesAbiertas;
            grupoNecesidadRowViewModel.NecesidadesPreasignadas = numeroNecesidadesPreasiganas;
            grupoNecesidadRowViewModel.NecesidadesCerradas     = numeroNecesidadesCerradas;

            if (grupoNecesidad.GrupoCerrado)
            {
                grupoNecesidadRowViewModel.EstadoGrupo = "Cerrado";
            }
            else
            {
                grupoNecesidadRowViewModel.EstadoGrupo = "Abierto";
            }
            if (numeroNecesidadesAsignadas > 0)
            {
                grupoNecesidadRowViewModel.NombreCliente  = grupoNecesidad.NecesidadesAsignadas.FirstOrDefault().Proyecto.Cliente.Nombre;
                grupoNecesidadRowViewModel.NombreProyecto = grupoNecesidad.NecesidadesAsignadas.FirstOrDefault().Proyecto.Nombre;
            }

            return(grupoNecesidadRowViewModel);
        }
        public static NecesidadGrupoRowExportToExcelViewModel ConvertToNecesidadGrupoRowExportToExcelViewModel(this GrupoNecesidad grupoNecesidad)
        {
            var necesidadGrupoRowExportToExcelViewModel = new NecesidadGrupoRowExportToExcelViewModel
            {
                Referencia                 = grupoNecesidad.GrupoNecesidadId,
                Nombre                     = grupoNecesidad.Nombre,
                Cliente                    = grupoNecesidad.NecesidadesAsignadas.FirstOrDefault().Proyecto.Cliente.Nombre,
                Proyecto                   = grupoNecesidad.NecesidadesAsignadas.FirstOrDefault().Proyecto.Nombre,
                NumNecesidades             = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId != (int)EstadoNecesidadEnum.Cancelado),
                NumNecesidadesAbiertas     = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Abierta),
                NumNecesidadesPreasignadas = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Preasignada),
                NumNecesidadesCerradas     = grupoNecesidad.NecesidadesAsignadas.Count(x => x.IsActivo && x.EstadoNecesidadId == (int)EstadoNecesidadEnum.Cerrada),
                Estado                     = grupoNecesidad.IsActivo.ToString()
            };

            if (!grupoNecesidad.GrupoCerrado)
            {
                necesidadGrupoRowExportToExcelViewModel.Estado = "Abierto";
            }
            else
            {
                necesidadGrupoRowExportToExcelViewModel.Estado = "Cerrado";
            }


            return(necesidadGrupoRowExportToExcelViewModel);
        }