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"));
            }
        }
        //GET: RoomRequests/Details/5
        public async Task <ActionResult> Details(int id)
        {
            try
            {
                using (var db = new ApplicationDbContext())
                {
                    Models.RoomRequest.RoomRequest roomRequest = await db.RoomRequests.FindAsync(id);

                    roomRequest.RoomRequestResponse = await db.RoomRequestResponse.FindAsync(roomRequest.RoomRequestResponse_ID);

                    if (Check.IsNull(roomRequest, "DetailsRoomRq"))
                    {
                        NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong");
                        return(View());
                    }
                    Models.Request.Request rq = await db.Requests.FindAsync(roomRequest.Request_ID);

                    rq.Accommodation = await AccommodationsController.LoadAccommodation(rq.Accommodation_ID);

                    Models.VM.ProfilePreviewVM host = await ProfilesController.ProfilePreviewVM(rq.RequestOwner_ID);

                    Models.RoomRequest.RoomRequestVMUser roomRequestVM = new Models.RoomRequest.RoomRequestVMUser(roomRequest, rq, host);
                    return(View(roomRequestVM));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong");
                return(RedirectToAction("Index", "Home"));
            }
        }
Beispiel #3
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

            using (var db = new ApplicationDbContext())
            {
                Models.Request.Request requestDB = await db.Requests.FindAsync(id);

                if (requestDB.RequestOwner_ID != tp.ID)
                {
                    NotificationManager.AddException(new Exception("Access Violation, Requesteditor is not requestowner"));
                }
                IQueryable <Models.RoomRequest.RoomRequest> RoomRequestsToBeCanceled = db.RoomRequests.Where(p => p.Request_ID == id);
                List <Models.RoomRequest.RoomRequest>       rRqL = await RoomRequestsToBeCanceled.ToListAsync();

                foreach (var rRq in rRqL)
                {
                    rRq.Invalid();          //Set RoomRq toinvalid, user will see request was Deleted
                    db.Entry(rRq).State = EntityState.Modified;
                }


                requestDB.Delete();
                db.Entry(requestDB).State = EntityState.Modified;
                await db.SaveChangesAsync();

                NotificationManager.AddNotification(NotificationType.Success, "Your request has been deleted");
            }

            return(RedirectToAction("Index"));
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            try
            {
                using (var db = new ApplicationDbContext())
                {
                    Models.RoomRequest.RoomRequest         roomRequest = db.RoomRequests.Find(id);
                    Models.RoomRequest.RoomRequestResponse response    = db.RoomRequestResponse.Find(roomRequest.RoomRequestResponse_ID);
                    roomRequest.Delete();
                    response.Canceled();
                    db.Entry(response).State    = EntityState.Modified;
                    db.Entry(roomRequest).State = EntityState.Modified;
                    await db.SaveChangesAsync();

                    NotificationManager.AddNotification(NotificationType.Success, "Room request has been deleted!");
                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(RedirectToAction("Index"));
            }
        }
        public async Task <ActionResult> Delete(int?id)
        {
            if (Check.IsNull(id))
            {
                return(RedirectToAction("Index"));
            }
            TravelerProfile travelerProfile = await ProfileManager.LoadUserAndTravelerProfile(User);

            using (var db = new ApplicationDbContext())
            {
                Models.RoomRequest.RoomRequest roomRequest = db.RoomRequests.Find(id);
                roomRequest.RoomRequestResponse = db.RoomRequestResponse.Find(roomRequest.RoomRequestResponse_ID);
                if (Check.IsNull(roomRequest, "RoomRequest Delete"))
                {
                    return(RedirectToAction("Index"));
                }
                if (roomRequest.ApplyingTraveler_ID != travelerProfile.ID)
                {
                    NotificationManager.AddException(new Exception("AccessViolation Roomrq Delete"));
                    return(RedirectToAction("Index"));
                }
                Models.Request.Request rq = await db.Requests.FindAsync(roomRequest.Request_ID);

                rq.Accommodation = await AccommodationsController.LoadAccommodation(rq.Accommodation_ID);

                Models.VM.ProfilePreviewVM host = await ProfilesController.ProfilePreviewVM(rq.RequestOwner_ID);

                Models.RoomRequest.RoomRequestVMUser roomRequestVM = new Models.RoomRequest.RoomRequestVMUser(roomRequest, rq, host);
                return(View(roomRequestVM));
            }
        }
Beispiel #6
0
        // GET: Requests/Create //id is roomid likibu
        public async Task <ActionResult> Create(string id, string thumb, string Location)
        {
            try
            {
                //load Offer from Likibu SearchSession
                if (User != null)
                {
                    TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                    TravelerProfileSearchSession searchsession = tp.SearchSession; ///searchsession comes here fom view? any has to be saved in loaded TravelerProfile
                    tp = await ProfilesController.LoadProfile(tp.ID);

                    tp.SearchSession = searchsession;
                    Models.Accommodation.Likibu.AccomodationDetailsParam para    = new Models.Accommodation.Likibu.AccomodationDetailsParam(tp.Attributes.Language, tp.Attributes.Currency, tp.SearchSession.CheckIn, tp.SearchSession.CheckOut);
                    Models.Accommodation.Likibu.AccomodationDetails      details = await Likibu.LikibuAccess.RequestAccomodationDetails(para, id);

                    Models.Request.RequestVMOwner requestVM = new Models.Request.RequestVMOwner(details.offer.Destination, details.offer.BedRooms, details.offer.PriceNight, details.offer.PriceWeek, details.offer.PriceMonth, details.offer.Lat, details.offer.Lng, tp.SearchSession.CheckIn, tp.SearchSession.CheckOut, id, tp.Attributes.Currency, thumb);

                    requestVM.Location = Location;
                    requestVM.Thumbs   = Models.Accommodation.Likibu.Offer.StringToArray(thumb).ToList();


                    return(View(requestVM));
                }
                return(View());
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(View());
            }
        }
Beispiel #7
0
        public async Task <ActionResult> Edit(Models.Request.RequestVMOwner requestVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                    using (var db = new ApplicationDbContext())
                    {
                        var trackedRequest = await db.Requests.FindAsync(requestVM.ID);

                        trackedRequest.Accommodation = await db.Accommodations.FindAsync(trackedRequest.Accommodation_ID);

                        trackedRequest.Accommodation.AccomProfile = await db.AccommProfile.FindAsync(trackedRequest.Accommodation.AccomProfileID);

                        Models.Request.Request update = trackedRequest;
                        update.SetValues(requestVM);

                        db.Entry(trackedRequest).CurrentValues.SetValues(update);
                        await db.SaveChangesAsync();

                        NotificationManager.AddNotification(NotificationType.Success, "Your request has been updated succesfully");
                        return(RedirectToAction("Index"));
                    }
                }
                catch (Exception e)
                {
                    NotificationManager.AddException(e);
                    NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                    return(View(requestVM));
                }
            }
            return(View(requestVM));
        }
Beispiel #8
0
        /// <summary>
        /// Finds rooms appropriate for roomrequest
        /// </summary>
        /// <param name="roomRequest"></param>
        /// <returns></returns>
        //public static async Task<List<Models.Accommodation.BedRoom>> GetSuitingRooms4RoomRequest(Models.RoomRequest.RoomRequest roomRequest)
        //{
        //    List<Models.Accommodation.BedRoom> roomsWCapacity = await GetFreeRooms(roomRequest.CheckInUser, roomRequest.CheckOutUser, roomRequest.Request_ID);
        //    List<Models.Accommodation.BedRoom> Rooms = new List<Models.Accommodation.BedRoom>();
        //    foreach (var room in roomsWCapacity)
        //    {
        //        if (!roomRequest.ShareRoom)
        //        {
        //            if (room.Vacant)
        //            {
        //                if (room.SingleBeds >= roomRequest.SingleBed && room.DoubleBeds >= roomRequest.DoubleBed)
        //                {
        //                    Rooms.Add(room);
        //                }
        //            }

        //        }
        //        else
        //        {
        //            if (room.SingleBeds >= roomRequest.SingleBed && room.DoubleBeds >= roomRequest.DoubleBed)
        //            {
        //                Rooms.Add(room);
        //            }
        //        }



        //    }

        //    return null;


        //}


        //public static async Task<List<Models.Accommodation.BedRoom>> GetFreeRooms(DateTime CheckIn, DateTime CheckOut, int rqID)
        //{
        //using (var db = new ApplicationDbContext())
        //{
        //    Models.Request.Request request = db.Requests.Find(rqID);
        //   // Models.Accommodation.Accommodation accom = db.Accommodations.Where(p => p.ID == request.Accommodation_ID).Include(p => p.BedRooms).Include(p => p.Capacity).FirstOrDefault();
        //   // int numbedRooms = accom.BedRooms.Count;
        //    IQueryable<Models.RoomRequest.RoomRequest> RoomRequests = db.RoomRequests.Where(p => p.Request_ID == rqID).Include(p => p.RoomRequestResponse); //Find all roomRequests and its response
        //    RoomRequests = RoomRequests.Where(p => p.RoomRequestResponse.responseStatus == Models.RoomRequest.RoomRequestResponseStatus.Reserved); //Filter reserved RoomRequests
        //    if (RoomRequests == null || RoomRequests.ToList().Count == 0) //no reservation was made, all Bedrooms are vacant
        //    {
        //     //   return accom.BedRooms;
        //    }
        //    IQueryable<Models.RoomRequest.RoomRequest> RoomRequestsOutSmaller = RoomRequests.Where(p => p.CheckInUser < CheckIn && p.CheckOutUser < CheckOut); //exclude outlayers before
        //    IQueryable<Models.RoomRequest.RoomRequest> RoomRequestsOutBigger = RoomRequests.Where(p => p.CheckInUser > CheckIn && p.CheckOutUser > CheckOut); //exclude outlayer after
        //    RoomRequests = RoomRequests.Except(RoomRequestsOutSmaller); //Except outlayers
        //    RoomRequests = RoomRequests.Except(RoomRequestsOutBigger);
        //    //List<Models.RoomRequest.RoomRequest> filteredRoomRequestsReserved = await RoomRequests.Where(p => p.RoomRequestResponse.IsReserved()).ToListAsync();

        //    List<Models.RoomRequest.RoomRequest> filteredRoomRequestsReserved = await RoomRequests.Where(p => p.RoomRequestResponse.responseStatus == Models.RoomRequest.RoomRequestResponseStatus.Reserved).ToListAsync(); //catch empty List

        //    if (filteredRoomRequestsReserved == null || filteredRoomRequestsReserved.Count == 0) //no reservation was made, all Bedrooms are vacant
        //    {
        //       // return accom.BedRooms;
        //    }
        //    List<Models.Accommodation.BedRoom>[] BookedBedrooms = new List<Models.Accommodation.BedRoom>[numbedRooms];
        //    foreach (var rRq in filteredRoomRequestsReserved) //FindBedrooms and its occupation for the given time interval
        //    {
        //        var room = db.BedRooms.Find(rRq.Room_ID);

        //        BookedBedrooms[room.RoomNumber - 1].Add(room);
        //    }

        //    List<Models.Accommodation.BedRoom> FreeBedRooms = new List<Models.Accommodation.BedRoom>();
        //    for (int i = 0; i < numbedRooms; i++) //check if rooms are fully loaded
        //    {
        //        if (BookedBedrooms[i].Count == 0)
        //        {
        //            Models.Accommodation.BedRoom freeBedRoom = accom.BedRooms.Where(p => p.RoomNumber == i).FirstOrDefault(); //just add the roomspecification
        //            freeBedRoom.Vacant = true;
        //            FreeBedRooms.Add(freeBedRoom);
        //        }
        //        else //get detailed Booking status ->check the roomrequests for each room in that time //
        //        {
        //            List<Models.RoomRequest.RoomRequest> rRqRoom = filteredRoomRequestsReserved.Where(p => p.Room_ID == BookedBedrooms[i].FirstOrDefault().ID).ToList();
        //            int doublebedsOccupied = 0;
        //            int singlebedsOccupied = 0;
        //            bool shared = true;
        //            foreach (var rRq in rRqRoom)
        //            {
        //                doublebedsOccupied += rRq.DoubleBed;
        //                singlebedsOccupied += rRq.SingleBed;
        //                if (rRq.ShareRoom != shared) { shared = false; }
        //            }

        //            if (shared && doublebedsOccupied + singlebedsOccupied < BookedBedrooms[i].FirstOrDefault().MaxGuests)
        //            {
        //                Models.Accommodation.BedRoom SharedBedRoom = BookedBedrooms[i].FirstOrDefault();
        //                SharedBedRoom.DoubleBeds -= doublebedsOccupied;
        //                SharedBedRoom.SingleBeds -= singlebedsOccupied;
        //                SharedBedRoom.SharePossible = true;     //these rooms are shared in this moment
        //                FreeBedRooms.Add(SharedBedRoom);
        //            }

        //        }

        //    }

        //    return FreeBedRooms;
        //}
        // }

        //GET: Requests/Edit/5
        public async Task <ActionResult> Edit(int id)
        {
            using (var db = new ApplicationDbContext())
            {
                Models.Request.Request request = await db.Requests.FindAsync(id);

                request.Accommodation = await AccommodationsController.LoadAccommodation(request.Accommodation_ID);

                if (Check.IsNull(request, "Edit Request"))
                {
                    NotificationManager.AddNotification(NotificationType.Warning, "Request does not exist!");
                    return(RedirectToAction("Index", "Home"));
                }
                TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                if (request.RequestOwner_ID != tp.ID)
                {
                    NotificationManager.AddException(new Exception("User is not the Requestowner, Access Violation"));
                    NotificationManager.AddNotification(NotificationType.Warning, "Access Violation");
                    return(RedirectToAction("Index", "Home"));
                }



                Models.Request.RequestVMOwner rqVM = new Models.Request.RequestVMOwner(request);

                return(View(rqVM));
            }
        }
Beispiel #9
0
        [HttpGet]                                           ///Todo implement Reservation Validation and Edit View appropriate    Preselection  of Profiles
        public async Task <ActionResult> SelectRoom(int id) // RoomRequest id
        {
            try
            {
                using (var db = new ApplicationDbContext())
                {
                    Models.RoomRequest.RoomRequest roomRequest = db.RoomRequests.Find(id);
                    roomRequest.RoomRequestResponse = await db.RoomRequestResponse.FindAsync(roomRequest.RoomRequestResponse_ID);

                    Models.VM.ProfilePreviewVM applicantPrevVM = await ProfilesController.ProfilePreviewVM(roomRequest.ApplyingTraveler_ID);

                    List <Models.RoomRequest.RoomRequest> reservations = await db.RoomRequests.Where(p => p.Request_ID == roomRequest.Request_ID).Include(p => p.RoomRequestResponse).Where(p => p.RoomRequestResponse.responseStatus == Models.RoomRequest.RoomRequestResponseStatus.Reserved).ToListAsync();

                    Models.Request.Request rq = db.Requests.Where(p => p.ID == roomRequest.Request_ID).Include(p => p.Accommodation).Include(p => p.Accommodation.BedRooms).FirstOrDefault();
                    Models.RoomRequest.RoomRequestVMOwner applicantVM = new Models.RoomRequest.RoomRequestVMOwner(roomRequest, applicantPrevVM);

                    Models.Request.SelectRoomVM sRVM = new Models.Request.SelectRoomVM(applicantVM, reservations, rq.Accommodation.BedRooms);
                    return(View(sRVM));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(View());
            }
        }
Beispiel #10
0
        private async Task GetEntry(int entryId)
        {
            IsLoading = true;
            try
            {
                CurrentEntry = await _ambulatoryDataService.GetEntryById(entryId);

                if (CurrentEntry.EntryStatus == Enum.Parse <EntryStatus>("3"))
                {
                    IsEditable = true;
                }
                else
                {
                    IsEditable = false;
                }
                if (CurrentEntry.MedCard == null)
                {
                    CurrentEntry.MedCard = new MedCard {
                        Patient = CurrentEntry.Patient
                    }
                }
                ;
                await Task.WhenAll(DiagnosticViewModel.Initialize(CurrentEntry), TherapyViewModel.Initialize(CurrentEntry));

                EntryViewModel.Initialize(CurrentEntry);
                Caption = CurrentEntry.TargetDateTime.ToShortTimeString();
            }
            catch (Exception ex)
            {
                NotificationManager.AddException(ex, 5);
            }
            IsLoading = false;
        }
Beispiel #11
0
        private async Task SearchDrugs(string value) //эксперементальная функция горячего поиска, нужно прерывание и задержка
        {
            if (value.Length > 2)
            {
                if (PharmacoData.Drug == null)
                {
                    IsLoadingPharma = true;
                    try
                    {
                        var result = await _therapyDataService.GetDrugs(value);

                        Drugs.Clear(); //drugsearchlist
                        foreach (Drug drug in result)
                        {
                            Drugs.Add(drug);
                        }
                    }
                    catch (Exception ex)
                    {
                        NotificationManager.AddException(ex, 4);
                    }
                    IsLoadingPharma = false;
                }
            }
            else
            {
                PharmacoData.Drug = null;
            }
        }
Beispiel #12
0
        public async Task <ActionResult> ReserveRoom(int id, int idrrq)  //RoomID
        {
            try
            {
                using (var db = new ApplicationDbContext())
                {
                    Models.RoomRequest.RoomRequest rRq = await db.RoomRequests.FindAsync(idrrq);

                    rRq.RoomRequestResponse = await db.RoomRequestResponse.FindAsync(rRq.RoomRequestResponse_ID);

                    Models.RoomRequest.RoomRequest rRqUpdate = rRq;
                    rRqUpdate.Reserve(id);
                    db.Entry(rRq).CurrentValues.SetValues(rRqUpdate);
                    db.Entry(rRq.RoomRequestResponse).CurrentValues.SetValues(rRqUpdate.RoomRequestResponse);
                    await db.SaveChangesAsync();

                    return(RedirectToAction("Reservations", "Requests", new { id = rRq.Request_ID }));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(View());
            }
        }
Beispiel #13
0
        // GET: Requests/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (Check.IsNull(id))
            {
                NotificationManager.AddException(new Exception("Request Delete, ID was null"));
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong");
                return(View());
            }
            TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

            using (var db = new ApplicationDbContext())
            {
                Models.Request.Request request = await db.Requests.FindAsync(id);

                if (Check.IsNull(request, "DeleteRequest"))
                {
                    NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong");
                    return(View());
                }
                if (request.RequestOwner_ID != tp.ID)
                {
                    NotificationManager.AddException(new Exception("Access Violation, Requesteditor is not requestowner"));
                }
                request.Accommodation = await AccommodationsController.LoadAccommodation(request.Accommodation_ID);

                Models.Request.RequestVMOwner rqVM = new Models.Request.RequestVMOwner(request);
                return(View(rqVM));
            }
        }
Beispiel #14
0
        private async Task <bool> StartLikibuSearch(Models.Find.SearchVM searchVM)
        {
            try
            {
                InitSearchVM4Search(searchVM);
                string searchID = await Likibu.LikibuAccess.StartSearchSession(searchVM);

                if (searchID == null)
                {
                    throw new Exception("No SearchID returned by Likibu request");
                }
                PopulateSearchSession(searchVM, searchID);
                return(true);
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                if (e.GetType() == typeof(WebException))
                {
                    NotificationManager.AddNotification(NotificationType.Warning, "Internal Server Error! Please be patient, we are working on it...");
                }
            }

            return(false);
        }
        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 }));
        }
Beispiel #16
0
        public async Task <ActionResult> Reservations(int?id) //RequestID
        {
            try
            {
                if (!id.HasValue)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                id = id.Value;
                TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                if (Check.IsNull(tp, "Index RoomRequests"))
                {
                    return(RedirectToAction("Index", "Home"));
                }
                using (var db = new ApplicationDbContext())
                {
                    Models.Request.Request rq = await db.Requests.FindAsync(id);

                    rq.Accommodation = await AccommodationsController.LoadAccommodation(rq.Accommodation_ID);



                    IQueryable <Models.RoomRequest.RoomRequest> IQuery           = db.RoomRequests.Where(p => p.Request_ID == id).Include(p => p.RoomRequestResponse);
                    IQueryable <Models.RoomRequest.RoomRequest> Reservations     = IQuery.Where(p => p.RoomRequestResponse.responseStatus == Models.RoomRequest.RoomRequestResponseStatus.Reserved);
                    IQueryable <Models.RoomRequest.RoomRequest> Approvals        = IQuery.Where(p => p.RoomRequestResponse.responseStatus == Models.RoomRequest.RoomRequestResponseStatus.Approved);
                    List <Models.RoomRequest.RoomRequest>       ReservationsList = await Reservations.ToListAsync();

                    List <Models.RoomRequest.RoomRequestVMOwner> resListVM     = new List <Models.RoomRequest.RoomRequestVMOwner>();
                    List <Models.RoomRequest.RoomRequest>        ApprovalsList = await Approvals.ToListAsync();

                    List <Models.RoomRequest.RoomRequestVMOwner> apprListVM = new List <Models.RoomRequest.RoomRequestVMOwner>();
                    foreach (var res in ReservationsList)
                    {
                        Models.VM.ProfilePreviewVM tpVMPrev = await ProfilesController.ProfilePreviewVM(res.ApplyingTraveler_ID);

                        Models.RoomRequest.RoomRequestVMOwner rRqVM = new Models.RoomRequest.RoomRequestVMOwner(res, tpVMPrev);
                        resListVM.Add(rRqVM);
                    }
                    foreach (var appr in ApprovalsList)
                    {
                        Models.VM.ProfilePreviewVM tpVMPrev = await ProfilesController.ProfilePreviewVM(appr.ApplyingTraveler_ID);

                        Models.RoomRequest.RoomRequestVMOwner rRqVM = new Models.RoomRequest.RoomRequestVMOwner(appr, tpVMPrev);
                        apprListVM.Add(rRqVM);
                    }
                    Models.RoomRequest.ReservationsVM reservationsVM = new Models.RoomRequest.ReservationsVM(rq.Accommodation.BedRooms, resListVM, apprListVM, rq);


                    return(View(reservationsVM));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(View());
            }
        }
        public async Task <ActionResult> Edit(int?id) //id roomRq
        {
            try
            {
                if (!id.HasValue)
                {
                    return(RedirectToAction("Search", "Searches"));
                }
                TravelerProfile travelerProfile = await ProfileManager.LoadUserAndTravelerProfile(User);

                using (var db = new ApplicationDbContext())
                {
                    Models.RoomRequest.RoomRequest roomRequest = await db.RoomRequests.FindAsync(id);

                    if (Check.IsNull(roomRequest, "Edit roomRequest"))
                    {
                        return(RedirectToAction("Index"));
                    }
                    Models.Request.Request request = await db.Requests.FindAsync(roomRequest.Request_ID);

                    request.Accommodation = await AccommodationsController.LoadAccommodation(request.Accommodation_ID);

                    if (!request.IsValid())
                    {
                        NotificationManager.AddNotification(NotificationType.Info, "The request is invalid, you can't edit your roomrequest anymore");
                        return(RedirectToAction("Index"));
                    }
                    if (roomRequest.ApplyingTraveler_ID != travelerProfile.ID)
                    {
                        NotificationManager.AddException(new Exception("Access violation, this is not your Roomrequest! Edit RoomRequest", new AccessViolationException()));

                        return(RedirectToAction("Index"));
                    }
                    roomRequest.RoomRequestResponse = db.RoomRequestResponse.Find(roomRequest.RoomRequestResponse_ID);

                    if (roomRequest.RoomRequestResponse.IsApproved())
                    {
                        NotificationManager.AddNotification(NotificationType.Info, "You cannot edit an approved roomrequest!");
                        return(RedirectToAction("Index"));
                    }
                    if (roomRequest.RoomRequestResponse.IsReserved())
                    {
                        NotificationManager.AddNotification(NotificationType.Info, "You cannot edit a reserved roomrequest!");
                        return(RedirectToAction("Index"));
                    }
                    Models.VM.ProfilePreviewVM host = await ProfilesController.ProfilePreviewVM(request.RequestOwner_ID);

                    Models.RoomRequest.RoomRequestVMUser roomRequestEditVM = new Models.RoomRequest.RoomRequestVMUser(roomRequest, request, null);

                    return(View(roomRequestEditVM));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                return(RedirectToAction("Index"));
            }
        }
Beispiel #18
0
        private static async Task <TravelerProfile> LoadTravelerProfile()
        {
            TravelerProfile profile = await db.TravelerProfile.FindAsync(user.ProfileID);

            if (profile == null)
            {
                Exception e = new Exception("Travelerprofile not found!");
                NotificationManager.AddException(e);
            }
            return(profile);
        }
Beispiel #19
0
        public async Task <ActionResult> CreateFree(Models.Request.RequestVMFree requestVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                    tp = await ProfilesController.LoadProfile(tp.ID);

                    Models.Request.Request rq = new Models.Request.Request(tp.ID, requestVM); //AccommodationModel is generated here

                    rq.Accommodation = new Models.Accommodation.Accommodation(0, requestVM.BedRooms);
                    if (!rq.Accommodation.Verified)
                    {
                        throw new Exception("Accommodation abstraction failed");
                    }
                    // get locationIDs
                    List <Models.Accommodation.Likibu.Destination> dest = await Likibu.LikibuAccess.DestinationRequest(requestVM.Location, tp.Attributes.Language, 1.ToString());

                    //Models.Accommodation.Likibu.DestinationDetail destDetail = await Likibu.LikibuAccess.DestinationDetailRequest();// Todo add LatLng


                    rq.Accommodation.AccomProfile = new Models.Accommodation.AccommodationProfile(dest.FirstOrDefault(), requestVM.BedRooms, requestVM.Link);
                    if (!requestVM.Lat.HasValue || !requestVM.Lng.HasValue)
                    {
                        float[] lnglat = new float[2];
                        lnglat = GoogleWrapper.LongLat2DoubleAr(await GoogleWrapper.GetGeolocation(requestVM.Location));

                        rq.Accommodation.AccomProfile.Lng = lnglat[0];
                        rq.Accommodation.AccomProfile.Lat = lnglat[1];
                    }
                    else
                    {
                        rq.Accommodation.AccomProfile.Lng = requestVM.Lng.Value;
                        rq.Accommodation.AccomProfile.Lat = requestVM.Lat.Value;
                    }
                    using (var db = new ApplicationDbContext())
                    {
                        db.Requests.Add(rq);
                        await db.SaveChangesAsync();
                    }
                    NotificationManager.AddNotification(NotificationType.Success, "Your request has been saved!");
                    return(RedirectToAction("Index", "Home"));
                }
                catch (Exception e)
                {
                    NotificationManager.AddException(e);
                    NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                }
            }
            return(View(requestVM));
        }
Beispiel #20
0
        public async Task <ActionResult> Create([Bind(Exclude = "ID")] Models.Request.RequestVMOwner requestVM)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                    Models.Accommodation.Likibu.AccomodationDetailsParam para    = new Models.Accommodation.Likibu.AccomodationDetailsParam(tp.Attributes.Language, tp.Attributes.Currency, requestVM.CheckIn.ToString(), requestVM.CheckOut.ToString());
                    Models.Accommodation.Likibu.AccomodationDetails      details = await Likibu.LikibuAccess.RequestAccomodationDetails(para, requestVM.AccomID);

                    ///
                    using (var db = new ApplicationDbContext())
                    {
                        requestVM.BedRooms    = details.offer.BedRooms;
                        requestVM.Lat         = details.offer.Lat;
                        requestVM.Lng         = details.offer.Lng;
                        requestVM.PricePNight = details.offer.PriceNight.ToString();
                        requestVM.PricePWeek  = details.offer.PriceWeek.ToString();
                        requestVM.PricepMonth = details.offer.PriceMonth.ToString();

                        details.offer.Destination = requestVM.Location;
                        details.offer.Thumbnails  = Models.Accommodation.Likibu.Offer.StringToArray(requestVM.ThumbsTemp).ToList();



                        Models.Request.Request rq = new Models.Request.Request(tp.ID, requestVM);

                        rq.Accommodation = new Models.Accommodation.Accommodation(details.offer.MaxGuests, details.offer.BedRooms); //AccommodationModel is generated here
                        if (!rq.Accommodation.Verified)
                        {
                            throw new Exception("Accommodation abstraction failed");
                        }
                        string currency = ProfilesController.Currency(tp.Attributes.Currency);
                        rq.Accommodation.AccomProfile = new Models.Accommodation.AccommodationProfile(details.offer, currency);

                        db.Requests.Add(rq);
                        await db.SaveChangesAsync();

                        NotificationManager.AddNotification(NotificationType.Success, "Your Request has been saved!");

                        return(RedirectToAction("Create", "RoomRequests", new { id = rq.ID }));
                    }
                }
                catch (Exception e)
                {
                    NotificationManager.AddException(e);
                    NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                    return(RedirectToAction("Search", "Searches"));
                }
            }
            return(View(requestVM));
        }
        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"));
            }
        }
Beispiel #22
0
        public async Task <ActionResult> DetailsHost(int?id) //RequestID
        {
            try
            {
                if (!id.HasValue)
                {
                    return(RedirectToAction("Index", "Requests"));
                }
                id = id.Value;
                TravelerProfile tp = await ProfileManager.LoadUserAndTravelerProfile(User);

                if (Check.IsNull(tp, "DetailsOwner"))
                {
                    return(RedirectToAction("Create", "Profiles"));
                }
                using (var db = new ApplicationDbContext())
                {
                    Models.Request.Request request = await db.Requests.FindAsync(id);

                    if (Check.IsNull(request, "DetailsOwner"))
                    {
                        return(RedirectToAction("Index", "Requests"));
                    }
                    if (request.IsDeleted("DetailsOwner"))
                    {
                        return(RedirectToAction("Index", "Requests"));
                    }

                    if (request.RequestOwner_ID != tp.ID)
                    {
                        NotificationManager.AddException(new Exception("Access violation, DetailsOwner, RqCtrl"));
                        return(RedirectToAction("Index", "Requests"));
                    }

                    string rrqstats = await RoomRequest.RoomRequestsController.RoomRequestStats(request);

                    request.Accommodation = await db.Accommodations.FindAsync(request.Accommodation_ID);

                    request.Accommodation.AccomProfile = await db.AccommProfile.FindAsync(request.Accommodation.AccomProfileID);

                    Models.Request.RequestVMOwner requestVM = new Models.Request.RequestVMOwner(request, rrqstats);
                    return(View(requestVM));
                }
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!");
                return(RedirectToAction("Index", "Requests"));
            }
        }
Beispiel #23
0
        public static async Task <TravelerProfile> LoadUserAndTravelerProfile(IPrincipal User)
        {
            try
            {
                await checkUserProfileIDandType(User);

                return(await LoadTravelerProfile());
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                return(null);
            }
        }
Beispiel #24
0
        public async Task <JsonResult> ShowGeoLocationString(string LocationString, string lang)
        {
            try
            {
                var dest = await GetGeolocationString(LocationString, lang, "10");

                JsonResult res = new JsonResult();
                res.Data = dest;
                res.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                return(res);
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
            }
            return(null);
        }
        private static string ParseJSON4LongLat(string js)
        {
            string status = ParseJSON4Status(js);

            if (string.Compare(status, "OK") == 0)
            {
                var    jo  = JObject.Parse(js);
                string lat = jo["results"][0]["geometry"]["location"]["lat"].ToString();
                string lng = jo["results"][0]["geometry"]["location"]["lng"].ToString();
                return(lng + "/" + lat);
            }
            else
            {
                NotificationManager.AddException(new Exception("GoogleGeolocationException status:" + status));
                return("");
            }
        }
Beispiel #26
0
        public async Task <ActionResult> Details(string lang, string cur, string chIn, string chOut, string id)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Models.Accommodation.Likibu.AccomodationDetails details = await GetAcomodationDetails(lang, cur, chIn, chOut, id);

                    return(View(details.offer));
                }
                return(View());
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
            }
            return(PartialView());
        }
        public static async Task <Models.Accommodation.Likibu.AccomodationDetails> RequestAccomodationDetails(Models.Accommodation.Likibu.AccomodationDetailsParam para, string roomID)
        {
            try
            {
                string webrq    = DetailsRqString + roomID + ApiKey;
                string rqString = webrq + para.Body;
                string retStr   = null;
                retStr = await webClient.DownloadStringTaskAsync(rqString);

                Models.Accommodation.Likibu.AccomodationDetails ADetails = ParseDetailsResult(retStr);
                return(ADetails);
            }
            catch (Exception e)
            {
                NotificationManager.AddException(e);
                return(null);
            }
        }
        public async Task <ActionResult> Create(Models.VM.TravelerProfileVM travelerProfile)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
                    user        = await userManager.FindByEmailAsync(User.Identity.Name);

                    TravelerProfile profile = new TravelerProfile();
                    PopulateTavelerProfile(profile);
                    profile.SetValues(travelerProfile);
                    Picture pic = ImageProcessing.ReadPicture(travelerProfile.DescriptionVM.upload);
                    if (pic != null)
                    {
                        profile.Description.ProfilePic = pic;
                    }
                    else
                    {
                        profile.Description.ProfilePic = ImageProcessing.ReadPicture(Server.MapPath("~/Images/ProfileBlankPic.png"));
                    }

                    profile.TimeStamp = DateTime.Now;
                    using (var db = new ApplicationDbContext())
                    {
                        db.TravelerProfile.Add(profile);
                        await db.SaveChangesAsync();
                    }
                    user.ProfileID = profile.ID;
                    user.UserType  = "Traveler";
                    await userManager.UpdateAsync(user);

                    NotificationManager.AddNotification(NotificationType.Success, "Travelerprofile successful created");
                    return(RedirectToAction("Index"));
                }
                catch (Exception e)
                {
                    NotificationManager.AddException(e);
                    return(View(travelerProfile));
                }
            }

            return(View(travelerProfile));
        }
Beispiel #29
0
        private async Task GetSurgeryOperations(SurgeryGroup group)
        {
            IsLoadingSurgery = true;
            try
            {
                SurgeryOperations.Clear();
                var res = await _therapyDataService.GetSurgeryOperations(group);

                foreach (SurgeryOperation operation in res)
                {
                    SurgeryOperations.Add(operation);
                }
            }
            catch (Exception ex)
            {
                NotificationManager.AddException(ex, 4);
            }
            IsLoadingSurgery = false;
        }
        public static async Task <string> StartSearchSession(Models.Find.SearchVM searchVM)
        {
            try
            {
                webClient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
                string webrq = SearchSessionString + ApiKey;

                Models.Accommodation.Likibu.StartSearchSessionBody Param = new Models.Accommodation.Likibu.StartSearchSessionBody(searchVM);
                string retStr = await webClient.UploadStringTaskAsync(webrq, "POST", Param.Body);

                Models.Accommodation.Likibu.StartSearchSessionReturnObject SssRObj = ParseSSSResponse(retStr);
                return(SssRObj.ID);
            }
            catch (WebException e)
            {
                NotificationManager.AddException(e);
            }
            return(null);
        }