/// <summary>
        /// Metoda tworząca listę wydarzeń do kalendarza.
        /// </summary>
        /// <param name="booking">Pojedyncza rezerwacja z listą gości.</param>
        public void MakeEventRequest(SimpleBookingUser booking)
        {
            Logs.WriteErrorLog("Robie request eventa (wrzucam zdarzenia na kolejke).");
            Logs.WriteErrorLog(booking.BookingEndTime.ToString("g"));
            Logs.WriteErrorLog(booking.BookingBeginTime.ToString("g"));
            var eventStartDateTime = new EventDateTime {
                DateTime = booking.BookingBeginTime
            };

            Logs.WriteErrorLog("Moja data rozp: " + eventStartDateTime.DateTime.ToString());
            var eventEndDateTime = new EventDateTime {
                DateTime = booking.BookingEndTime
            };

            Logs.WriteErrorLog("Moja data zakonczenia: " + eventEndDateTime.DateTime.ToString());
            Request = new BatchRequest(Service);
            Logs.WriteErrorLog("tytul: " + booking.BookingTitle);
            Logs.WriteErrorLog("Opis" + booking.BookingDescription);
            Request.Queue <Event>(Service.Events.Insert(
                                      new Event
            {
                Summary     = booking.BookingTitle,
                Description = booking.BookingDescription,
                Start       = eventStartDateTime,
                End         = eventEndDateTime
            }, CalendarId),
                                  (content, error, i, message) =>
            {
                //Do wypełnienia "Callback"
            });
            Logs.WriteErrorLog("Wrzucilem.");
        }
        /// <summary>
        /// Metoda pobiera z WebServisu informacje o użytkowniku, którego nie ma w Usłudze.
        /// </summary>
        /// <param name="guest">Parametr z którego pobierane są informacje, którego użytkownika dodać.</param>
        private async Task AddNewUser(SimpleBookingUser guest)
        {
            Logs.WriteErrorLog("AddNewUser");
            Logs.WriteErrorLog("guest.UserId: " + guest.UserId.ToString() + ", Booking title: " + guest.BookingTitle);

            GetUserInfoResponse userInfo = null;

            userInfo = await WebServiceConnection.SendGet <GetUserInfoResponse>("user/" + guest.UserId + "/info");

            if (userInfo == null)
            {
                Logs.WriteErrorLog("UserInfo zwrocilo null z WebSerwisu");
            }
            if (userInfo.Email == null)
            {
                Logs.WriteErrorLog("UserEmil zwrocil null");
            }
            var userNew = new User(userInfo.Email, guest.UserId);

            //userNew.UserId = guest.UserId;
            Logs.WriteErrorLog("UserNew.UserEmail: " + userNew.UserEmail + ", UserNew.UserId" + userNew.UserId);
            //Autoryzuj użytkownika, zakładając że jego token istnieje.
            userNew.Calendar.AuthorizeTask();
            if (userNew.Calendar.IsCalendarAuthorized == false)
            {
                return;
            }
            Logs.WriteErrorLog("uzytkownik " + userNew.UserEmail + " zostal zautoryzowany.");
            userNew.Calendar.Service.Events.QuickAdd("primary", "Testujemy poprawnosc autoryzacji").ExecuteAsync();

            _usersList.Add(userNew);
            Logs.WriteErrorLog("Pierwszy uzytkownik w kolejce to: " + _usersList.First().UserEmail);
        }
 /// <summary>
 /// Metoda dodaje nowe zdarzenie do kalendarza użytkownika.
 /// Wydarzenie zostaje wrzucone na stos zdarzeń do aktualizacji.
 /// </summary>
 /// <param name="guest">Zaproszony gość z w bazie danych.</param>
 /// <param name="user">Użytkownik, któremu przypisuje się wydarzenie do kalendarza.</param>
 private static void AddNewEvent(SimpleBookingUser guest, User user)
 {
     Logs.WriteErrorLog("Dodaje nowe wydazenie uzytkownikowi " + user.UserEmail);
     if (user.Calendar.IsCalendarAuthorized)
     {
         Logs.WriteErrorLog("Zautoryzowany!");
         user.Calendar.MakeEventRequest(guest);
         Logs.WriteErrorLog("wykonalem MakeEventRequest.");
     }
     else
     {
         Logs.WriteErrorLog("Dodaje zdarzenie do kolejki, bo uzytkownik nie jest zautoryzowany.");
         AddEventToQueue(guest, user);
         Logs.WriteErrorLog("Dodalem zdarzenie do kolejki.");
     }
 }
        /// <summary>
        /// Metoda dodaje wydarzenie do kolejki zdarzeń.
        /// </summary>
        /// <param name="guest">Rezerwacja, która zostanie dodana do kolejki.</param>
        /// <param name="user">Użytkownik, któremu zostanie zakolejkowane wydarzenie.</param>
        private static void AddEventToQueue(SimpleBookingUser guest, User user)
        {
            Logs.WriteErrorLog("AddEventToQueue");
            var eventStartDateTime = new Google.Apis.Calendar.v3.Data.EventDateTime {
                DateTime = guest.BookingBeginTime
            };
            var eventEndDateTime = new Google.Apis.Calendar.v3.Data.EventDateTime {
                DateTime = guest.BookingEndTime
            };

            var e = new Google.Apis.Calendar.v3.Data.Event()
            {
                Start       = eventStartDateTime,
                End         = eventEndDateTime,
                Description = guest.BookingDescription,
                Summary     = guest.BookingTitle,
                Location    = guest.BookingRoomName
            };

            user.Calendar.EventsQueue.Enqueue(e);
            Logs.WriteErrorLog("Koniec AddEventToQueue");
        }
        /// <summary> 
        /// Metoda dodaje wydarzenie do kolejki zdarzeń.
        /// </summary>
        /// <param name="guest">Rezerwacja, która zostanie dodana do kolejki.</param>
        /// <param name="user">Użytkownik, któremu zostanie zakolejkowane wydarzenie.</param>
        private static void AddEventToQueue(SimpleBookingUser guest, User user)
        {
            Logs.WriteErrorLog("AddEventToQueue");
            var eventStartDateTime = new Google.Apis.Calendar.v3.Data.EventDateTime { DateTime = guest.BookingBeginTime };
            var eventEndDateTime = new Google.Apis.Calendar.v3.Data.EventDateTime { DateTime = guest.BookingEndTime };

            var e = new Google.Apis.Calendar.v3.Data.Event()
            {
                Start = eventStartDateTime,
                End = eventEndDateTime,
                Description = guest.BookingDescription,
                Summary = guest.BookingTitle,
                Location = guest.BookingRoomName
            };
            user.Calendar.EventsQueue.Enqueue(e);
            Logs.WriteErrorLog("Koniec AddEventToQueue");
        }
 /// <summary>
 /// Metoda dodaje nowe zdarzenie do kalendarza użytkownika.
 /// Wydarzenie zostaje wrzucone na stos zdarzeń do aktualizacji.
 /// </summary>
 /// <param name="guest">Zaproszony gość z w bazie danych.</param>
 /// <param name="user">Użytkownik, któremu przypisuje się wydarzenie do kalendarza.</param>
 private static void AddNewEvent(SimpleBookingUser guest, User user)
 {
     Logs.WriteErrorLog("Dodaje nowe wydazenie uzytkownikowi " + user.UserEmail);
     if (user.Calendar.IsCalendarAuthorized)
     {
         Logs.WriteErrorLog("Zautoryzowany!");
         user.Calendar.MakeEventRequest(guest);
         Logs.WriteErrorLog("wykonalem MakeEventRequest.");
     }
     else
     {
         Logs.WriteErrorLog("Dodaje zdarzenie do kolejki, bo uzytkownik nie jest zautoryzowany.");
         AddEventToQueue(guest, user);
         Logs.WriteErrorLog("Dodalem zdarzenie do kolejki.");
     }
 }
        /// <summary>
        /// Metoda pobiera z WebServisu informacje o użytkowniku, którego nie ma w Usłudze.
        /// </summary>
        /// <param name="guest">Parametr z którego pobierane są informacje, którego użytkownika dodać.</param>
        private async Task AddNewUser(SimpleBookingUser guest)
        {
            Logs.WriteErrorLog("AddNewUser");
            Logs.WriteErrorLog("guest.UserId: " + guest.UserId.ToString() + ", Booking title: " + guest.BookingTitle);

            GetUserInfoResponse userInfo = null;
            userInfo = await WebServiceConnection.SendGet<GetUserInfoResponse>("user/" + guest.UserId + "/info");
            if(userInfo == null) Logs.WriteErrorLog("UserInfo zwrocilo null z WebSerwisu");
            if(userInfo.Email == null) Logs.WriteErrorLog("UserEmil zwrocil null");
            var userNew = new User(userInfo.Email, guest.UserId);
            //userNew.UserId = guest.UserId;
            Logs.WriteErrorLog("UserNew.UserEmail: " + userNew.UserEmail + ", UserNew.UserId" + userNew.UserId);
            //Autoryzuj użytkownika, zakładając że jego token istnieje.
            userNew.Calendar.AuthorizeTask();
            if (userNew.Calendar.IsCalendarAuthorized == false)
            {
                return;
            }
            Logs.WriteErrorLog("uzytkownik " + userNew.UserEmail + " zostal zautoryzowany.");
            userNew.Calendar.Service.Events.QuickAdd("primary", "Testujemy poprawnosc autoryzacji").ExecuteAsync();
            
            _usersList.Add(userNew);
            Logs.WriteErrorLog("Pierwszy uzytkownik w kolejce to: " + _usersList.First().UserEmail);
        }
 /// <summary>
 /// Metoda tworząca listę wydarzeń do kalendarza.
 /// </summary>
 /// <param name="booking">Pojedyncza rezerwacja z listą gości.</param>
 public void MakeEventRequest(SimpleBookingUser booking)
 {
     Logs.WriteErrorLog("Robie request eventa (wrzucam zdarzenia na kolejke).");
     Logs.WriteErrorLog(booking.BookingEndTime.ToString("g"));
     Logs.WriteErrorLog(booking.BookingBeginTime.ToString("g"));
     var eventStartDateTime = new EventDateTime { DateTime = booking.BookingBeginTime };
     Logs.WriteErrorLog("Moja data rozp: " + eventStartDateTime.DateTime.ToString());
     var eventEndDateTime = new EventDateTime { DateTime = booking.BookingEndTime };
     Logs.WriteErrorLog("Moja data zakonczenia: " + eventEndDateTime.DateTime.ToString());
     Request = new BatchRequest(Service);
     Logs.WriteErrorLog("tytul: " + booking.BookingTitle);
     Logs.WriteErrorLog("Opis" + booking.BookingDescription);
     Request.Queue<Event>(Service.Events.Insert(
         new Event
         {
             Summary = booking.BookingTitle,
             Description = booking.BookingDescription,
             Start = eventStartDateTime,
             End = eventEndDateTime
         }, CalendarId),
         (content, error, i, message) =>
         {
             //Do wypełnienia "Callback"
         });
     Logs.WriteErrorLog("Wrzucilem.");
 }