public static MyAssignmentsInfo GetMyAssignmentsInfoFromUrl(HttpClientHandler handler, NavigationInfo navigation)
        {
            try
            {
                HttpClient client = new HttpClient(handler);

                client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "VolontarPortal/1.0");

                using (var response = client.GetAsync("http://volontar.polisen.se/" + navigation.MyAssignmentsUrl).Result)
                {
                    using (var responseContent = response.Content)
                    {
                        var pageContent = responseContent.ReadAsStringAsync().Result;

                        var interestsIndex    = pageContent.IndexOf("intresse", StringComparison.Ordinal);
                        var confirmsIndex     = pageContent.IndexOf("Uttagen att medverka", StringComparison.Ordinal);
                        var reservationsIndex = pageContent.IndexOf("reservlista - meddelas", StringComparison.Ordinal);
                        var historyIndex      = pageContent.IndexOf("Historik", StringComparison.Ordinal);

                        AvailableAssignmentsInfo interests    = null;
                        AvailableAssignmentsInfo confirms     = null;
                        AvailableAssignmentsInfo reservations = null;
                        AssignmentsHistoryInfo   history      = null;

                        if (interestsIndex != -1 && confirmsIndex != -1)
                        {
                            interests = new AvailableAssignmentsInfo(pageContent.Substring(interestsIndex, confirmsIndex - interestsIndex));
                        }
                        if (confirmsIndex != -1 && reservationsIndex != -1)
                        {
                            confirms = new AvailableAssignmentsInfo(pageContent.Substring(confirmsIndex, reservationsIndex - confirmsIndex));
                        }
                        if (reservationsIndex != -1)
                        {
                            reservations = new AvailableAssignmentsInfo(pageContent.Substring(reservationsIndex));
                        }
                        if (historyIndex != -1)
                        {
                            history = new AssignmentsHistoryInfo(pageContent.Substring(historyIndex));
                        }

                        var lastWeek = DateTime.Today.AddDays(-7);

                        return(new MyAssignmentsInfo
                        {
                            IsLoggedIn = true,
                            Interests = interests != null ? interests.Assignments : new List <Assignment>(),
                            Confirms = confirms != null ? confirms.Assignments : new List <Assignment>(),
                            Reservations = reservations != null ? reservations.Assignments : new List <Assignment>(),
                            History = history != null?history.Assignments.Where(a => a.Date >= lastWeek).OrderByDescending(a => a.Date).ToList() : new List <AssignmentHistory>()
                        });
                    }
                }
            }
            catch (System.Exception)
            {
                return(new MyAssignmentsInfo {
                });
            }
        }
        public static MyAssignmentsInfo GetMyAssignmentsInfoFromUrl(HttpClientHandler handler, NavigationInfo navigation)
        {
            try
            {
                HttpClient client = new HttpClient(handler);
                using (var response = client.GetAsync("http://volontar.polisen.se/" + navigation.MyAssignmentsUrl).Result)
                {
                    using (var responseContent = response.Content)
                    {
                        var pageContent = responseContent.ReadAsStringAsync().Result;

                        var interestsIndex    = pageContent.IndexOf("intresse", StringComparison.Ordinal);
                        var confirmsIndex     = pageContent.IndexOf("Uttagen att medverka", StringComparison.Ordinal);
                        var reservationsIndex = pageContent.IndexOf("reservlista - meddelas", StringComparison.Ordinal);

                        AvailableAssignmentsInfo interests    = null;
                        AvailableAssignmentsInfo confirms     = null;
                        AvailableAssignmentsInfo reservations = null;

                        if (interestsIndex != -1 && confirmsIndex != -1)
                        {
                            interests = new AvailableAssignmentsInfo(pageContent.Substring(interestsIndex, confirmsIndex - interestsIndex));
                        }
                        if (confirmsIndex != -1 && reservationsIndex != -1)
                        {
                            confirms = new AvailableAssignmentsInfo(pageContent.Substring(confirmsIndex, reservationsIndex - confirmsIndex));
                        }
                        if (reservationsIndex != -1)
                        {
                            reservations = new AvailableAssignmentsInfo(pageContent.Substring(reservationsIndex));
                        }

                        return(new MyAssignmentsInfo
                        {
                            Interests = interests != null ? interests.Assignments : new List <Assignment>(),
                            Confirms = confirms != null ? confirms.Assignments : new List <Assignment>(),
                            Reservations = reservations != null ? reservations.Assignments : new List <Assignment>()
                        });
                    }
                }
            }
            catch (System.Exception)
            {
                return(new MyAssignmentsInfo {
                });
            }
        }
        private static List <Assignment> GetAvailableAssignmentsFromPortal(CookieFailKeyInfo cookieFailKeyInfo)
        {
            var list = new List <Assignment>();

            try
            {
                var cookieContainer = new CookieContainer();
                cookieContainer.Add(new Uri("http://volontar.polisen.se/"), new Cookie("PHPSESSID", cookieFailKeyInfo.Key));
                using (var handler = new HttpClientHandler()
                {
                    CookieContainer = cookieContainer
                })
                {
                    HttpClient client = new HttpClient(handler);
                    using (var response = client.GetAsync("http://volontar.polisen.se/" + cookieFailKeyInfo.AvailableAssignmentsUrl).Result)
                    {
                        using (var responseContent = response.Content)
                        {
                            var content = responseContent.ReadAsStringAsync().Result;

                            if (!LoginHelper.IsLoginContent(content))
                            {
                                return(list);
                            }

                            var availableAssignments = new AvailableAssignmentsInfo(content);
                            list.AddRange(availableAssignments.Assignments);
                        }
                    }
                }
            }
            catch (Exception)
            {
                // TODO: Do error handling
            }

            return(list);
        }