public string agregarMecanicoArep(int registro, int idEmb)//agrega un mecanico a la reparacion de la embarcacion seleccionada
        {
            string   salida = "No se ingreso el mecanico solicitado.";
            Mecanico mec    = buscarMecanico(registro);

            if (mec != null)
            {
                if (verificarDispMec(mec))
                {
                    Embarcacion e = this.buscarEmbarcacion(idEmb);

                    if (e != null)
                    {
                        salida = e.agregarMec(mec);
                    }
                    else
                    {
                        salida = "El Id de embarcacion ingresado no corresponde a una embarcacion de nuestra lista.";
                    }
                }
                else
                {
                    salida = "El mecanico seleccionado se encuentra en otra reparacion.";
                }
            }
            else
            {
                salida = "El numero de registro ingresado no corresponde a un mecanico de nuestra lista.";
            }

            return(salida);
        }
        public string agregarMaterialRep(string matNombre, double cantidad, int idEmb)//agrega un material a la reparacion de la embarcacion seleccionada
        {
            string   salida = "El material que ingreso no existe.";
            Material m      = buscarMaterial(matNombre);

            if (m != null)
            {
                if (confirmarStock(m, cantidad))
                {
                    Embarcacion e = this.buscarEmbarcacion(idEmb);

                    if (e != null)
                    {
                        salida = e.agregarMat(m, cantidad);
                    }
                    else
                    {
                        salida = "La embarcacion con id: " + idEmb.ToString() + " no existe";
                    }
                }
                else
                {
                    salida = "No se dispone del stock solicitado ingrese menor valor de " + m.Peso + "kg";
                }
            }

            return(salida);
        }
        public List <MatUtilizado> mostrarMatRepFin(int idEmb, DateTime fechaIngRep) // arma una lista con los materiales utilizados de una reparacion dada una embarcacion
        {
            List <MatUtilizado> matUtilizadoRepFin = new List <MatUtilizado>();

            Embarcacion e = this.buscarEmbarcacion(idEmb);

            if (e != null)
            {
                matUtilizadoRepFin = e.buscarMatRepFin(fechaIngRep);
            }

            return(matUtilizadoRepFin);
        }
        public bool verificarNoHayRepNoFin(int idEmb)//Verifica que no tenga ninguna reparacion que no este finalizada
        {
            bool        salida = false;
            Embarcacion e      = this.buscarEmbarcacion(idEmb);


            if (e.buscarRepNoFin() == null)
            {
                salida = true;
            }

            return(salida);
        }
        public List <Mecanico> mostrarMecRepFin(int idEmb, DateTime fechaIngRep) // arma una lista con los mecanicos de una reparacion dada una embarcacion
        {
            List <Mecanico> mecanicosRepFin = new List <Mecanico>();

            Embarcacion e = this.buscarEmbarcacion(idEmb);

            if (e != null)
            {
                mecanicosRepFin = e.buscarMecRepFin(fechaIngRep);
            }

            return(mecanicosRepFin);
        }
        public List <Reparacion> mostrarRepFinEmb(int idEmb)
        {
            List <Reparacion> reparacionesFin = new List <Reparacion>();
            Embarcacion       e = this.buscarEmbarcacion(idEmb);

            if (e != null)
            {
                reparacionesFin = e.buscarRepFinalizadas();
                reparacionesFin.Sort();
            }

            return(reparacionesFin);
        }
        public Embarcacion buscarEmbarcacion(int idEmb)
        {
            int         i = 0;
            Embarcacion e = null;

            while (i < embarcaciones.Count && e == null)
            {
                if (embarcaciones[i].IdEmb == idEmb)
                {
                    e = embarcaciones[i];
                }
                i++;
            }

            return(e);
        }
        public List <Reparacion> mostrarRepPendEmb(int idEmb)//muestra las reparaciones pendientes de una embarcacion dada
        {
            List <Reparacion> reparacionesPend = new List <Reparacion>();
            Embarcacion       e = this.buscarEmbarcacion(idEmb);

            if (e != null)
            {
                Reparacion r = e.buscarRepPend();
                if (r != null)
                {
                    reparacionesPend.Add(r);
                }
            }

            return(reparacionesPend);
        }
        public string entregaRep(int opcion, DateTime fechaEnt)//finaliza una reparacion de la embarcacion seleccionada
        {
            string salida = "";


            Embarcacion e = buscarEmbarcacion(opcion);

            if (e.buscarRepNoFin() != null)
            {
                salida = e.entregaRep(fechaEnt);
            }
            else
            {
                salida = "La embarcacion ingresada no esta en reparacion Cheque los Datos ingresados. ";
            }

            return(salida);
        }
        /* public string mostrarRepNoFinEmb(int idEmb) //Muestra las reparaciones pendientes y en ejecucion de una embarcacion
         * {
         *   string salida = "El id de embarcacion que selecciono no es correcto";
         *
         *   Embarcacion e = this.buscarEmbarcacion(idEmb);
         *
         *   if(e != null)
         *   {
         *     // salida = e.mostrarRepNoFinDeEmb();
         *   }
         *
         *  /* int i = 0;
         *   bool bandera = false;
         *
         *   while (i < embarcaciones.Count && !bandera)
         *   {
         *
         *       if (embarcaciones[i].IdEmb == idEmb)
         *       {
         *           bandera = true;
         *           salida = (embarcaciones[i].mostrarRepDeEmb());
         *       }
         *       i++;
         *   }
         *
         *   return salida;
         * }*/
        #endregion

        #region Metodos Reparacion


        public string agregarReparacion(int idEmb, DateTime fechaIng, DateTime fechaPromEnt)
        {
            string salida = "La reparacion no se pudo dar de alta.";

            Embarcacion e = this.buscarEmbarcacion(idEmb);

            if (e != null)
            {
                if (fechaIng.CompareTo(fechaPromEnt) == -1 || fechaIng.CompareTo(fechaPromEnt) == 0)
                {
                    if (e.agregarReparacion(fechaIng, fechaPromEnt))
                    {
                        salida = "Se dio de alta a la repracion de forma correcta ";
                    }
                }
                else
                {
                    salida = "La fecha de ingreso debe ser menor o igual que la fecha prometida de entrega.";
                }
            }
            return(salida);
        }