public async Task <ActionResult> Edit() { try { TravelerProfile profile = await ProfileManager.LoadUserAndTravelerProfile(User); if (profile != null) { using (var db = new ApplicationDbContext()) { profile = await LoadProfile(profile.ID); Models.VM.TravelerProfileVM profileVM = new Models.VM.TravelerProfileVM(profile); return(View(profileVM)); } } else { return(RedirectToAction("Create")); } } catch (Exception e) { NotificationManager.AddException(e); return(RedirectToAction("Index", "Home")); } }
public async Task <ActionResult> _PostReview(Models.VM.CreateReviewVM review) { if (ModelState.IsValid) { try { TravelerProfile tpcheck = await ProfileManager.LoadUserAndTravelerProfile(User); TravelerProfile tp = await ProfilesController.LoadProfile(review.ID); if (tpcheck.ID == tp.ID) { throw new Exception("Access Violation Post Review! User tried to Review his own profile", new AccessViolationException()); } TravelerProfileReviews treviews = tp.Reviews; var tpRevUpdate = treviews; TravelerProfile tPoster = await ProfileManager.LoadUserAndTravelerProfile(User); Review rev = new Review(review, tPoster.ID, tp.TravelerReviewsID); tpRevUpdate.Reviews.Add(rev); using (var db = new ApplicationDbContext()) { db.Reviews.Add(rev); await db.SaveChangesAsync(); } } catch (Exception e) { NotificationManager.AddException(e); NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!"); } } return(RedirectToAction("Details", new { id = review.ID })); }
public async Task <ActionResult> Index() { if (Request.IsAuthenticated) { Models.TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User); if (tp == null) { return(RedirectToAction("Create", "Profiles")); } } return(View()); }
public async Task <ActionResult> Details(int?id) { try { TravelerProfile tp; TravelerProfile tpcheck; bool user = false; if (id == null) /// load own ProfileDetails { tp = await ProfileManager.LoadUserAndTravelerProfile(User); tp = await LoadProfile(tp.ID); user = true; } else { tp = await LoadProfile(id.Value); tpcheck = await ProfileManager.LoadUserAndTravelerProfile(User); if (tp.ID == tpcheck.ID) { user = true; } } Models.VM.TravelerProfileVM profileVM = LoadTravelerVM(tp); int i = 0; foreach (var rev in tp.Reviews.Reviews) { Models.VM.ProfilePreviewVM poster = await ProfilePreviewVM(rev.TravelerPoster_ID); profileVM.ReviewsVM.Reviews[i].Poster = poster; i++; } profileVM.User = user; if (!user) { profileVM.createReview = new Models.VM.CreateReviewVM(id.Value); } return(View(profileVM)); } catch (Exception e) { NotificationManager.AddException(e); return(RedirectToAction("Index", "Home")); } }
public static async Task <string> GetCurrency(IPrincipal User) { if (User != null) { TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User); tp = await LoadProfile(tp.ID); return(Currency(tp.Attributes.Currency)); } else { return("$"); } }
public async Task <ActionResult> Index() { if (User != null) { ///Load TravelerInfos Mailbox, Requests, RoomRequests TravelerProfile profile = await ProfileManager.LoadUserAndTravelerProfile(User); if (profile != null) { profile = await LoadProfile(profile.ID); Models.VM.TravelerProfileVM profileVM = new Models.VM.TravelerProfileVM(profile); return(View(profileVM)); } } return(RedirectToAction("Create")); }
[HttpGet] ///Todo load old Search public async Task <ActionResult> Search() { try { if (Request.IsAuthenticated) { TravelerProfile travelerProfile = await ProfileManager.LoadUserAndTravelerProfile(User); if (!Check.IsNull(travelerProfile, "Search")) { travelerProfile.SearchSession = await db.LikibuSearchSession.FindAsync(travelerProfile.TravelerSearchID); if (!Check.IsNull(travelerProfile.SearchSession, "Search")) { TimeSpan lastSearch = DateTime.Now - travelerProfile.SearchSession.TimeStamp; TimeSpan oneDay = TimeSpan.FromDays(1); if (lastSearch < oneDay) { Models.Find.SearchVM searchVM = new Models.Find.SearchVM(); searchVM.Search = new Models.Find.Search(); searchVM.Search.CheckIn = travelerProfile.SearchSession.CheckIn; searchVM.Search.CheckOut = travelerProfile.SearchSession.CheckOut; searchVM.Search.Location = travelerProfile.SearchSession.Location; searchVM.Search.BedRooms = travelerProfile.SearchSession.BedRooms; searchVM.Search.FilterProps = travelerProfile.SearchSession.Filter; return(await Search(searchVM)); } } } } return(View()); } catch (Exception e) { NotificationManager.AddException(e); return(RedirectToAction("Index", "Home")); } }
private async Task <bool> UpdateSearchSession(Models.Find.SearchVM searchVM) { try { TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User); using (var db = new ApplicationDbContext()) { TravelerProfile travelerDB = db.TravelerProfile.Find(tp.ID); var trackedSearch = db.LikibuSearchSession.Find(travelerDB.TravelerSearchID); tp.SearchSession.UpdateSearchSession(searchVM.Search); db.Entry(trackedSearch).CurrentValues.SetValues(tp.SearchSession); db.Entry(trackedSearch.Filter).CurrentValues.SetValues(tp.SearchSession.Filter); await db.SaveChangesAsync(); } return(true); } catch (Exception e) { NotificationManager.AddException(e); return(false); } }
public async Task <ActionResult> Search(Models.Find.SearchVM searchVM) { if (ModelState.IsValid) { try { if (searchVM.Search.nav == null) { if (Request.IsAuthenticated) { TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User); tp.Attributes = await db.TravelerProfileAttributes.FindAsync(tp.TravelerAttributesID); searchVM.Currency = tp.Attributes.Currency; searchVM.Language = tp.Attributes.Language; } else { Models.Find.Search search = searchVM.Search; searchVM = new Models.Find.SearchVM(); searchVM.Search = search; searchVM.Currency = "usd"; searchVM.Language = "en"; } await StartLikibuSearch(searchVM); /// if ret == null Show internal Server Error, try again later await WaitForResults(searchVM); await GetSearchResults(searchVM); await GetRequestSearchResults(searchVM); } else { int page = int.Parse(searchVM.Search.FilterProps.Page); switch (searchVM.Search.nav) { case "p": { if (page > 1) { page--; } break; } case "n": { if (page < searchVM.LikibuResults.TotalPages) { page++; } break; } default: break; } searchVM.Search.FilterProps.Page = page.ToString(); await GetRequestSearchResults(searchVM); await GetSearchResults(searchVM); } } catch (Exception e) { NotificationManager.AddException(e); NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!"); } return(View(searchVM)); }//ModelState not valid return(View(searchVM)); }
public async Task <ActionResult> Edit(Models.VM.TravelerProfileVM tpVM) { if (ModelState.IsValid) { try { TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User); if (tp != null) { using (var db = new ApplicationDbContext()) { tp = await LoadProfile(tp.ID);//tp is the updated version TravelerProfile travelerDB = db.TravelerProfile.Find(tp.ID); var Attributes = await db.TravelerProfileAttributes.FindAsync(tp.TravelerAttributesID); var Description = await db.TravelerProfileDescription.FindAsync(tp.TravelerProfileDescriptionID); var ProfilePic = await db.Pictures.FindAsync(tp.Description.ProfilePic_ID); tp.SetValues(tpVM); //setting old values w/o picture //db.Entry(travelerDB).CurrentValues.SetValues(tp); tp.Attributes.ID = Attributes.ID; db.Entry(Attributes).CurrentValues.SetValues(tp.Attributes); if (ProfilePic != null) /// old picture exists ///Check tp here!! IDs { if (tpVM.DescriptionVM.upload != null) //new upload exists { //overwrite old Pic Picture newPic = ImageProcessing.ReadPicture(tpVM.DescriptionVM.upload); newPic.ID = ProfilePic.ID; //Setting id of old pic id tp.Description.ProfilePic_ID = newPic.ID; tp.Description.ProfilePic = newPic; db.Entry(ProfilePic).CurrentValues.SetValues(tp.Description.ProfilePic); db.Entry(Description).CurrentValues.SetValues(tp.Description); //kann denn raus } //do nothing with Pic tp.Description.ID = Description.ID; db.Entry(Description).CurrentValues.SetValues(tp.Description); } else //no old pic exists { if (tpVM.DescriptionVM.upload != null) //new upload exists { tp.Description.ProfilePic = ImageProcessing.ReadPicture(tpVM.DescriptionVM.upload); db.Pictures.Add(tp.Description.ProfilePic); tp.Description.ID = Description.ID; db.Entry(Description).CurrentValues.SetValues(tp.Description); } tp.Description.ID = Description.ID; db.Entry(Description).CurrentValues.SetValues(tp.Description); } await db.SaveChangesAsync(); } NotificationManager.AddNotification(NotificationType.Success, "Profile update successful"); return(RedirectToAction("Index", "Home")); } } catch (Exception e) { NotificationManager.AddException(e); } } return(View(tpVM)); }