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"));
        }
Example #7
0
        [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"));
            }
        }
Example #8
0
        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);
            }
        }
Example #9
0
        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));
        }