public Prt_Response realizarBalanceo(Prt_Request obj)
 {
     try
     {
         return(portafolioService.realizarBalanceo(obj));
     }
     catch (Exception)
     {
         throw;
     }
 }
        public Prt_Response realizarBalanceo(Prt_Request obj)
        {
            try
            {
                Prt_Response       retorno = new Prt_Response();
                Portafolio_Request param   = new Portafolio_Request();
                param.codigo_portafolio = int.Parse(obj.portafolio);
                List <Prt_Solicitud>   solicitudes     = portafolioDA.BuscarSolicitudes(param);
                List <Prt_Recurso>     recursos        = portafolioDA.BuscarRecursos(param);
                List <Prt_BalanceoTmp> balanceotmp     = new List <Prt_BalanceoTmp>();
                List <Prt_Solicitud>   solicitudes_tmp = new List <Prt_Solicitud>();
                Prt_BalanceoTmp        objtemp         = new Prt_BalanceoTmp();
                string msj = "";
                int    x   = 0;
                while (x < obj.lista_parametros.Count)
                {
                    objtemp           = new Prt_BalanceoTmp();
                    objtemp.solicitud = int.Parse(obj.lista_parametros[x]);
                    x++;
                    objtemp.configurado = int.Parse(obj.lista_parametros[x]);
                    x++;
                    balanceotmp.Add(objtemp);
                }
                int numero = 0;
                foreach (Prt_Recurso rec in recursos)
                {
                    solicitudes_tmp = solicitudes.Where(y => y.nid_recurso.Equals(rec.nid_recurso)).ToList <Prt_Solicitud>();
                    numero          = 0;
                    foreach (Prt_Solicitud sol in solicitudes_tmp)
                    {
                        foreach (Prt_BalanceoTmp tmp in balanceotmp)
                        {
                            if (tmp.solicitud.Equals(sol.nid_solicitud))
                            {
                                if (tmp.configurado > sol.nu_solicitado)
                                {
                                    msj = "Se esta asignando, mas de lo solicitado para: " + sol.co_solicitud;
                                    break;
                                }
                                if (sol.nid_solicitud.Equals(tmp.solicitud))
                                {
                                    numero += tmp.configurado;
                                }
                            }
                        }
                    }

                    if (solicitudes_tmp.Count > 0)
                    {
                        if (rec.nu_recursodisponible < numero)
                        {
                            msj = "No existen Recursos Disponibles para recurso: " + rec.no_nombre;
                            break;
                        }
                    }
                }

                if (msj.Equals(""))
                {
                    int pk = portafolioDA.RegistrarBalanceo(int.Parse(obj.id_user));
                    foreach (Prt_BalanceoTmp tmp in balanceotmp)
                    {
                        portafolioDA.RegistrarBalanceoDetalle(tmp, pk, int.Parse(obj.id_user));
                    }

                    retorno.resultado = 1;
                    retorno.mensaje   = "La Propuesta de Balanceo se realizó correctamente";
                }
                else
                {
                    retorno.resultado = 0;
                    retorno.mensaje   = msj;
                }

                return(retorno);
            }
            catch (Exception)
            {
                throw;
            }
        }