public bool exists(Conductor conductor, Vehiculo vehiculo)
        {
            List <ConductorHabitual> all = this.getAll();
            ConductorHabitual        conductorHabitual = all.Where(x => x.Matricula == vehiculo.Matricula && x.DNI == conductor.DNI).ToList().FirstOrDefault();

            return(conductorHabitual != null);
        }
        public IHttpActionResult Delete(ConductorHabitual conductorHabitual)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Conductor conductor = conductorRepository.getById(conductorHabitual.DNI);

            if (conductor == null)
            {
                return(BadRequest("No existe conductor"));
            }

            Vehiculo vehiculo = vehiculoRepository.getById(conductorHabitual.Matricula);

            if (vehiculo == null)
            {
                return(BadRequest("No existe vehiculo"));
            }

            if (conductorHabitualRepository.exists(conductor, vehiculo))
            {
                conductorHabitualRepository.remove(conductor, vehiculo);
            }
            else
            {
                return(BadRequest("No se localiza ese conductor habitual para el vehículo dado"));
            }

            return(CreatedAtRoute("getConductoresHabitualesByVehiculo", new { id = vehiculo.Matricula }, conductorHabitualRepository.getByVehiculo(vehiculo)));
        }
        public void remove(Conductor conductor, Vehiculo vehiculo)
        {
            List <ConductorHabitual> conductores       = this.getAll();
            ConductorHabitual        conductorHabitual = conductores.Where(c => c.DNI == conductor.DNI && c.Matricula == vehiculo.Matricula).ToList().FirstOrDefault();

            if (conductorHabitual != null)
            {
                conductores.Remove(conductorHabitual);
                string json = JsonConvert.SerializeObject(conductores);
                this.write(json);
            }
        }
        public void add(Conductor conductor, Vehiculo vehiculo)
        {
            List <ConductorHabitual> conductores       = this.getAll();
            ConductorHabitual        conductorHabitual = new ConductorHabitual()
            {
                DNI = conductor.DNI, Matricula = vehiculo.Matricula
            };

            conductores.Add(conductorHabitual);
            string json = JsonConvert.SerializeObject(conductores);

            this.write(json);
        }
        public IHttpActionResult Post(ConductorHabitual conductorHabitual)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            Conductor conductor = conductorRepository.getById(conductorHabitual.DNI);

            if (conductor == null)
            {
                return(BadRequest("No existe conductor"));
            }

            List <Vehiculo> vehiculosHabituales = conductorHabitualRepository.getByConductor(conductor);

            if (vehiculosHabituales.Count == 10)
            {
                return(BadRequest("El conductor ha superado el máximo de vehiculos habituales"));
            }

            Vehiculo vehiculo = vehiculoRepository.getById(conductorHabitual.Matricula);

            if (vehiculo == null)
            {
                return(BadRequest("No existe vehiculo"));
            }

            if (conductorHabitualRepository.exists(conductor, vehiculo))
            {
                return(BadRequest("El vehiculo ya esta asociado a este conductor"));
            }

            conductorHabitualRepository.add(conductor, vehiculo);

            return(CreatedAtRoute("getConductoresHabitualesByVehiculo", new { id = vehiculo.Matricula }, conductorHabitualRepository.getByVehiculo(vehiculo)));
        }