示例#1
0
        /// <summary>
        /// mappging the data from our api model
        /// </summary>
        /// <param name="model"></param>
        /// <param name="hero"></param>
        /// <returns></returns>
        internal static DetailedHeroViewModel MappingFromApi(DetailedHeroViewModel model, SuperHeroById.HeroById hero)
        {
            try
            {
                model.ApiId    = hero.ApiId;
                model.Name     = hero.Name;
                model.ImageUrl = hero.Image.Url;
                model.BiographyData.Full_Name      = hero.Biography.Full_Name;
                model.BiographyData.Alignment      = hero.Biography.Alignment;
                model.BiographyData.Place_Of_Birth = hero.Biography.Place_Of_Birth;
                model.BiographyData.Publisher      = hero.Biography.Publisher;
                model.AppearanceValues.Gender      = hero.Appearance.Gender;
                model.AppearanceValues.Race        = hero.Appearance.Race;
                model.Powerstat.Intelligence       = hero.Powerstats.Intelligence;
                model.Powerstat.Strength           = hero.Powerstats.Strength;
                model.Powerstat.Speed      = hero.Powerstats.Speed;
                model.Powerstat.Durability = hero.Powerstats.Durability;
                model.Powerstat.Power      = hero.Powerstats.Power;
                model.Powerstat.Combat     = hero.Powerstats.Combat;

                return(model);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#2
0
        /// <summary>
        /// mapping the data from our db
        /// or if the hero not in our db then mapping
        /// a not available hero
        /// </summary>
        /// <param name="model"></param>
        /// <param name="hero"></param>
        /// <returns></returns>
        internal static DetailedHeroViewModel MappingWhenApiNA(DetailedHeroViewModel model, FavouriteSuperHero hero)
        {
            var infoWhenApiNA = "Temporarily Unavailable!";

            try
            {
                //if the hero doesn't exist in our db yet
                if (hero == null)
                {
                    model.Name     = infoWhenApiNA;
                    model.ImageUrl = "../../../img/pictureNA.jpg";
                    model.BiographyData.Full_Name      = infoWhenApiNA;
                    model.BiographyData.Alignment      = infoWhenApiNA;
                    model.BiographyData.Place_Of_Birth = infoWhenApiNA;
                    model.BiographyData.Publisher      = infoWhenApiNA;
                    model.AppearanceValues.Gender      = infoWhenApiNA;
                    model.AppearanceValues.Race        = infoWhenApiNA;
                    model.Powerstat.Intelligence       = infoWhenApiNA;
                    model.Powerstat.Strength           = infoWhenApiNA;
                    model.Powerstat.Speed      = infoWhenApiNA;
                    model.Powerstat.Durability = infoWhenApiNA;
                    model.Powerstat.Power      = infoWhenApiNA;
                    model.Powerstat.Combat     = infoWhenApiNA;

                    return(model);
                }

                //if the hero is in our db already
                model.ApiId    = hero.ApiId.ToString();
                model.Name     = hero.Name;
                model.ImageUrl = hero.ImgUrl;
                model.BiographyData.Full_Name      = hero.RealName;
                model.BiographyData.Alignment      = infoWhenApiNA;
                model.BiographyData.Place_Of_Birth = infoWhenApiNA;
                model.BiographyData.Publisher      = infoWhenApiNA;
                model.AppearanceValues.Gender      = infoWhenApiNA;
                model.AppearanceValues.Race        = infoWhenApiNA;
                model.Powerstat.Intelligence       = hero.Intelligence.ToString();
                model.Powerstat.Strength           = hero.Strength.ToString();
                model.Powerstat.Speed      = hero.Speed.ToString();
                model.Powerstat.Durability = hero.Durability.ToString();
                model.Powerstat.Power      = hero.Power.ToString();
                model.Powerstat.Combat     = hero.Combat.ToString();

                return(model);
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#3
0
        public async Task <ActionResult> RemoveFromFavourite(string id)
        {
            var apiId  = 0;
            var userId = User.Identity.GetUserId();

            try
            {
                #region Validation
                if (id == null)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                if (!int.TryParse(id, out apiId))
                {
                    return(RedirectToAction("Index", "Home"));
                }

                #endregion

                //delete record from db
                objBs.detailedHeroBLL.RemoveHeroFromUserFavouriteList(userId, apiId); //KI KELL E TÖRÖLNI A BATTLELOG TÁBLÁBÓL IS???

                var hero = await ApiCall.GetHeroById(apiId);

                var model = new DetailedHeroViewModel();

                //mapping back the model from api
                model             = objBs.detailedHeroBLL.MappingFromApi(model, hero);
                model.IsFavourite = false;

                return(View("DetailedHero", model));
            }
            catch (ApiNotFoundException)
            {
                var model      = new DetailedHeroViewModel();
                var heroFromDb = objBs.FavouriteSuperHeroBLL.GetFavouriteHeroById(apiId);
                model             = objBs.detailedHeroBLL.MappingWhenApiNA(model, heroFromDb);
                model.IsFavourite = false;
                return(View("DetailedHero", model));
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#4
0
        public async Task <ActionResult> AddToFavourite(string id)
        {
            var apiId  = 0;
            var userId = User.Identity.GetUserId();

            try
            {
                #region Validtion
                if (id == null)
                {
                    return(RedirectToAction("Index", "Home"));
                }


                if (!int.TryParse(id, out apiId))
                {
                    return(RedirectToAction("Index", "Home"));
                }

                var userFavSuperHeroesIdList = objBs.FavouriteSuperHeroBLL.GetUserFavouriteHeroIdList(userId);

                //if this hero already in the user favourites
                if (userFavSuperHeroesIdList.Contains(apiId))
                {
                    return(RedirectToAction("Index", "Home"));
                }

                #endregion

                var hero = await ApiCall.GetHeroById(apiId);

                var model = new DetailedHeroViewModel();

                //if the hero is already in database
                //the program just add the hero to the user fav list
                //but won't save in the favouritehero table
                var favHeroIdList = objBs.FavouriteSuperHeroBLL.GetFavouriteHeroIdList();
                if (favHeroIdList.Contains(apiId))
                {
                    objBs.detailedHeroBLL.SaveHeroToUserFavHeroList(apiId, userId);

                    //mapping back the model from api
                    model             = new DetailedHeroViewModel();
                    model             = objBs.detailedHeroBLL.MappingFromApi(model, hero);
                    model.IsFavourite = true;

                    return(View("DetailedHero", model));
                }

                //if the hero doesn't exist in the db yet
                //then we create a new one, add to the user
                //and save to the db
                var newFavouriteHero = objBs.detailedHeroBLL.MappingNewFavouriteHero(hero);
                objBs.detailedHeroBLL.SaveHeroToDb(newFavouriteHero, userId);

                //mapping back the model
                model             = objBs.detailedHeroBLL.MappingFromApi(model, hero);
                model.IsFavourite = true;

                return(View("DetailedHero", model));
            }
            catch (ApiNotFoundException)
            {
                //if the hero is already in database
                //the program just add the hero to the user fav list
                //but won't save in the favouritehero table
                var favHeroIdList = objBs.FavouriteSuperHeroBLL.GetFavouriteHeroIdList();
                if (favHeroIdList.Contains(apiId))
                {
                    var heroToSave = objBs.FavouriteSuperHeroBLL.GetFavouriteHeroById(apiId);
                    objBs.detailedHeroBLL.SaveHeroToUserFavHeroList(apiId, userId);

                    //mapping back the model if we can't reach the api
                    var model = new DetailedHeroViewModel();
                    model             = objBs.detailedHeroBLL.MappingWhenApiNA(model, heroToSave);
                    model.IsFavourite = true;

                    return(View("DetailedHero", model));
                }

                throw new Exception("The api not available, and the hero is not in our db!");
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                return(RedirectToAction("Index", "Home"));
            }
        }
示例#5
0
        public async Task <ActionResult> DetailedHero(string id)
        {
            var heroId = 0;
            var userId = User.Identity.GetUserId();

            try
            {
                #region Validation
                if (!int.TryParse(id, out heroId))
                {
                    return(RedirectToAction("Index", "SearchView"));
                }

                if (heroId <= 0)
                {
                    return(RedirectToAction("Index", "SearchView"));
                }
                #endregion

                var hero = await ApiCall.GetHeroById(heroId);

                var model = new DetailedHeroViewModel();
                model.IsFavourite = false;
                var userFavSuperHeroesIdList = objBs.FavouriteSuperHeroBLL.GetUserFavouriteHeroIdList(userId);


                //to help check if the hero is already a favourite one
                //that the user actually viewing
                if (userFavSuperHeroesIdList.Contains(heroId))
                {
                    model.IsFavourite = true;
                }

                //mapping if we get back the hero from api
                model = objBs.detailedHeroBLL.MappingFromApi(model, hero);

                return(View(model));
            }
            catch (ApiNotFoundException)
            {
                //if api not working

                var model = new DetailedHeroViewModel();
                model.IsFavourite = false;
                var userFavSuperHeroesIdList = objBs.FavouriteSuperHeroBLL.GetUserFavouriteHeroIdList(userId);

                //to help check if the hero is already a favourite one
                //that the user actually viewing
                if (userFavSuperHeroesIdList.Contains(heroId))
                {
                    model.IsFavourite = true;
                }

                var heroFromDb = objBs.FavouriteSuperHeroBLL
                                 .GetFavouriteHeroById(heroId);
                model = objBs.detailedHeroBLL.MappingWhenApiNA(model, heroFromDb);

                return(View(model));
            }
            catch (Exception)
            {
                throw;
            }
        }
示例#6
0
 /// <summary>
 /// mapping the data from our db
 /// or if the hero not in our db then mapping
 /// a not available hero
 /// </summary>
 /// <param name="model"></param>
 /// <param name="hero"></param>
 /// <returns></returns>
 public DetailedHeroViewModel MappingWhenApiNA(DetailedHeroViewModel model, FavouriteSuperHero hero)
 {
     return(DetailedHeroMapping.MappingWhenApiNA(model, hero));
 }
示例#7
0
 /// <summary>
 /// mappging the data from our api model
 /// </summary>
 /// <param name="model"></param>
 /// <param name="hero"></param>
 /// <returns></returns>
 public DetailedHeroViewModel MappingFromApi(DetailedHeroViewModel model, SuperHeroById.HeroById hero)
 {
     return(DetailedHeroMapping.MappingFromApi(model, hero));
 }