using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using FirstSteps.Models;

namespace FirstSteps.Data
{
    // DAO = Data Access Object
    public class HotelRepository
    {
        private static List<Hotel> hotels;

        public HotelRepository()
        {
            if (hotels == null)
            {
                hotels = new List<Hotel>();
                hotels.Add(new Hotel { Id = 1, Bezeichnung = "Hotel zur Post", Sterne = 1, RegionId = 1 });
                hotels.Add(new Hotel { Id = 2, Bezeichnung = "Jägerhof", Sterne = 2, RegionId = 1 });
                hotels.Add(new Hotel { Id = 3, Bezeichnung = "Waldhotel", Sterne = 1, RegionId = 1 });
                hotels.Add(new Hotel { Id = 4, Bezeichnung = "Hotel Mama", Sterne = 4, RegionId = 1 });
                hotels.Add(new Hotel { Id = 5, Bezeichnung = "Hotel Schwichtenberg", Sterne = 5, RegionId = 1 });
            }
        }

        public List<Region> GetRegionen()
        {
            var result = new List<Region>();
            result.Add(new Region { RegionId = 1, Bezeichnung = "Essen" });
            result.Add(new Region { RegionId = 2, Bezeichnung = "Dubai" });
            result.Add(new Region { RegionId = 3, Bezeichnung = "Bielefeld" });
            result.Add(new Region { RegionId = 4, Bezeichnung = "Wolfsburg" });

            return result;
        }

        public List<Hotel> FindAll()
        {
            return hotels;
        }

        public Hotel FindById(int id)
        {
            return hotels.FirstOrDefault(h => h.Id == id);
        }

        public void Save(Hotel hotel)
        {
            var hotelInDb = hotels.Where(h => h.Id == hotel.Id).FirstOrDefault();

            if (hotelInDb != null)
            {
                hotelInDb.Sterne = hotel.Sterne;
                hotelInDb.Bezeichnung = hotel.Bezeichnung;
                hotelInDb.RegionId = hotel.RegionId;
            }
            else
            {
                hotel.Id = hotels.Max(h => h.Id) + 1;
                hotels.Add(hotel);
            }
        }
    }
}