/// <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; } }
/// <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; } }
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; } }
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")); } }
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; } }
/// <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)); }
/// <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)); }