using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;

using FourLayer.ApplicationLogic;
using FourLayer.BusinessEntity;

/// <summary>
/// Ogólny opis BookService
/// </summary>
[WebService(Namespace = "http://www.coreaspnet.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class BookService : System.Web.Services.WebService {

    public BookService () {   }

   [WebMethod]
   public string[] GetTitleSuggestions(string prefixText, int count)
   {
      // najpierw pobierz listę książek, które odpowiadają danym wprowadzonym przez użytkownika
      BookCatalogLogic logic = new BookCatalogLogic();
      EntityCollection<Book> books = logic.GetBooksByTitle(prefixText);

      // jeśli takich książek nie ma, zwróć wartość null
      if (books == null || books.Count == 0)
         return null;
      else
      {
         // należy zwrócić nie więcej książek, niż to określono w parametrze count
         int countOfTitles = books.Count;
         if (countOfTitles > count) countOfTitles = count;

         // utwórz tablicę ze zwracanymi danymi
         string[] titles = new string[countOfTitles];
         // wypełnij tablicę na podstawie listy książek
         for (int i = 0; i < countOfTitles; i++)
         {
            // zwróć tylko 16 pierwszych liter tytułu
            int maxLen = 16;
            if (maxLen > books[i].Title.Length) maxLen = books[i].Title.Length;
            titles[i] = books[i].Title.Substring(0, maxLen);
         }
         return titles;
      }
    }
    
}

