Esempio n. 1
0
        public ActionResult RemoveFromFavourite(string charId)
        {
            try
            {
                string userName = User.Identity.Name;

                if (db.tblUserFavouriteCharacters.Any(x => x.UserName.Equals(userName) && x.FavCharId.ToString() == charId))
                {
                    db.tblUserFavouriteCharacters.Remove(db.tblUserFavouriteCharacters.Where(x => x.UserName.Equals(userName) && x.FavCharId.ToString() == charId).First());
                    db.SaveChanges();
                }
                List <ComicCharacter> myFavChars = new List <ComicCharacter>();

                List <int> myFavCharDBEntries = db.tblUserFavouriteCharacters.Where(x => x.UserName.Equals(User.Identity.Name)).Select(x => x.FavCharId).ToList();

                foreach (var item in myFavCharDBEntries)
                {
                    ComicCharacter comicChar = SuperheroAPIHandler.GetCharacterById(item.ToString());
                    if (comicChar != null)
                    {
                        myFavChars.Add(comicChar);
                    }
                }
                ViewData["FromUserFavouriteCharacters"] = true;
                return(View("UserFavouriteCharacters", myFavChars));
            }
            catch (Exception)
            {
                return(Json(new { Result = false }));
            }
        }
        /// <summary>
        /// Get Comic Character by Id
        /// </summary>
        /// <param name="charId"></param>
        /// <returns></returns>
        public static ComicCharacter GetCharacterById(string charId)
        {
            ComicCharacter comicCharacter = new ComicCharacter();

            try
            {
                // Check if the requested character is already downloaded
                if (DownloadedComicCharacters != null && DownloadedComicCharacters.Any(x => x.id.Equals(charId)))
                {
                    comicCharacter = DownloadedComicCharacters.Where(x => x.id.Equals(charId)).First();
                    return(comicCharacter);
                }

                // If not already downloaded then download and return a copy
                using (var client = new System.Net.Http.HttpClient())
                {
                    //Passing service base url
                    client.BaseAddress = new Uri(Baseurl);

                    client.DefaultRequestHeaders.Clear();
                    //Define request data format
                    client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

                    //Sending request to find web api REST service resource GetAllEmployees using HttpClient
                    System.Net.Http.HttpResponseMessage Res = client.GetAsync(charId).Result;

                    //Checking the response is successful or not which is sent using HttpClient
                    if (Res.IsSuccessStatusCode)
                    {
                        //Storing the response details recieved from web api
                        var ComicCharacterResponse = Res.Content.ReadAsStringAsync().Result;

                        //Deserializing the response recieved from web api and storing into the Employee list
                        comicCharacter = Newtonsoft.Json.JsonConvert.DeserializeObject <ComicCharacter>(ComicCharacterResponse);

                        // Check if the character images is available, if not then replace it with default image
                        if (comicCharacter != null && comicCharacter.image != null && !IsFileExistOnRemoteServer(comicCharacter.image.url))
                        {
                            comicCharacter.image.url = DefaultThumbnailUrl;
                        }

                        // Add the downloaded character in downloaded list
                        if (comicCharacter.id != null)
                        {
                            DownloadedComicCharacters.Add(comicCharacter);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error calling API: " + ex.Message);
            }
            //returning the result
            return(comicCharacter);
        }
        private async Task CreateComicCharacter(IList <Character> characters, Comic comic)
        {
            IList <ComicCharacter> comicCharacters = new List <ComicCharacter>();

            foreach (var item in characters)
            {
                ComicCharacter comicCharacterItem = new ComicCharacter();
                comicCharacterItem.Character = item;
                comicCharacterItem.Comic     = comic;

                comicCharacters.Add(comicCharacterItem);
            }

            await _unitOfWOrk.ComicCharacterRepository.Add(comicCharacters);
        }
Esempio n. 4
0
        /// <summary>
        /// Get User Favourite Characters
        /// </summary>
        /// <returns></returns>
        public ActionResult UserFavouriteCharacters()
        {
            List <ComicCharacter> myFavChars = new List <ComicCharacter>();

            List <int> myFavCharDBEntries = db.tblUserFavouriteCharacters.Where(x => x.UserName.Equals(User.Identity.Name)).Select(x => x.FavCharId).ToList();

            foreach (var charId in myFavCharDBEntries)
            {
                ComicCharacter comicChar = SuperheroAPIHandler.GetCharacterById(charId.ToString());
                if (comicChar != null)
                {
                    myFavChars.Add(comicChar);
                }
            }
            ViewData["FromUserFavouriteCharacters"] = true;
            return(View(myFavChars));
        }
Esempio n. 5
0
        public JsonResult LoadNextRandomCharactersToCarousel(int offset, int size)
        {
            List <ComicCharacter> comicChars = new List <ComicCharacter>();
            Random rnd = new Random();

            int[] generatedRandomCharIds = SuperheroAPIHandler.FavouriteCharacters.Skip(offset).Take(size).ToArray();
            foreach (var ComicChar in generatedRandomCharIds)
            {
                ComicCharacter comicChar = SuperheroAPIHandler.GetCharacterById(ComicChar.ToString());
                if (comicChar != null)
                {
                    comicChars.Add(comicChar);
                }
            }
            if (comicChars.Any())
            {
                string modelString = RenderRazorViewToString("_CarouselRandomChars", comicChars);
                return(Json(new { ModelString = modelString, ModelCount = SuperheroAPIHandler.FavouriteCharacters.Count() }));
            }
            return(Json(comicChars));
        }
Esempio n. 6
0
        public void InsertComics(int id)
        {
            dynamic jResult = JObject.Parse(RestServices.ComicsGet(id).Content);
            int     total   = jResult.data.total;
            int     comics  = _context.ComicCharacter.Count(e => e.CharacterId == id);
            int     n       = 0;

            if (comics < total)
            {
                while (n < total)
                {
                    //Objeto dinamico recebendo o conteúdo retornado do GET
                    dynamic jResult2 = JObject.Parse(RestServices.ComicsGet(100, n, id).Content);

                    //Extraindo apenas o conjunto de dados que importam pra minha aplicação
                    var res = jResult2.data.results;

                    //Iterando nos dados e inserindo no banco
                    foreach (var x in res)
                    {
                        //Se o id já existir no banco, não será inserido
                        if (_context.Comic.Find((int)x.id) == null)
                        {
                            //(string)x.description, (DateTime)x.modified, (string)x.thumbnail.path + '.' + (string)x.thumbnail.extension
                            DateTime date = DateTime.Now;
                            foreach (var t in x.dates)
                            {
                                if (t.type == "onsaleDate")
                                {
                                    bool z = DateTime.TryParse((string)t.date, out date);

                                    if (z)
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        date = DateTime.Now;
                                    }
                                }
                            }

                            Comic d = new Comic((int)x.id, (string)x.title, (string)x.format, (int)x.pageCount, (string)x.series.name, (DateTime)date, (string)x.thumbnail.path + '.' + (string)x.thumbnail.extension, (string)x.description);
                            _context.Add(d);
                            _context.SaveChanges();

                            var c = x.characters.items;
                            foreach (var h in c)
                            {
                                string s    = h.resourceURI;
                                int    last = s.LastIndexOf('/');
                                s = s.Substring(last + 1);
                                ComicCharacter e = new ComicCharacter((int)x.id, int.Parse(s));
                                _context.Add(e);
                                _context.SaveChanges();
                            }
                        }
                    }
                    n += 100;
                }
            }
        }
Esempio n. 7
0
 private void btnCreateVillain_Click(object sender, EventArgs e)
 {
     factory   = new CreateVillain(tbVillainName.Text, tbVillainPowers.Text, tbVillainMotive.Text, tbVillainRival.Text);
     character = factory.createCharacter();
     tbHeroesAndVillains.Text += character.getSummary() + "\n \n";
 }
Esempio n. 8
0
 private void btnCreateHero_Click(object sender, EventArgs e)
 {
     factory   = new CreateHero(tbHeroName.Text, tbHeroPowers.Text, tbHeroCity.Text, tbHeroOrigin.Text);
     character = factory.createCharacter();
     tbHeroesAndVillains.Text += character.getSummary() + "\n \n";
 }