Esempio n. 1
0
        public ViewLocationPage()
        {
            InitializeComponent();

            BindingContext = new ViewLocationViewModel(App.EventAggregator, App.SignalRService);

            ((ViewLocationViewModel)BindingContext).PropertyChanged += ViewLocationPage_PropertyChanged;
        }
        public async Task <IViewComponentResult> InvokeAsync(int jobId, CancellationToken cancellationToken)
        {
            var user = await _authService.GetCurrentUser(HttpContext, cancellationToken);

            if (user == null)
            {
                throw new UnauthorizedAccessException("No user in session");
            }

            var jobDetails = (await _requestService.GetJobSummaryAsync(jobId, cancellationToken));
            var canView    = await _requestService.LogViewLocationEvent(user.ID, jobDetails.RequestID, jobId);

            ViewLocationViewModel viewLocationViewModel;

            if (canView)
            {
                var postCodeCoordinates = (await _addressService.GetPostcodeCoordinates(jobDetails.PostCode)).First();

                var distanceInMiles = await _addressService.GetDistanceBetweenPostcodes(jobDetails.PostCode, user.PostalCode, cancellationToken);

                viewLocationViewModel = new ViewLocationViewModel()
                {
                    IsAllowed    = canView,
                    Coordinates  = postCodeCoordinates,
                    Distance     = distanceInMiles,
                    PostCode     = jobDetails.PostCode,
                    encodedJobID = Base64Utils.Base64Encode(jobDetails.JobID)
                };
            }
            else
            {
                viewLocationViewModel = new ViewLocationViewModel()
                {
                    IsAllowed    = canView,
                    Coordinates  = null,
                    Distance     = null,
                    PostCode     = null,
                    encodedJobID = Base64Utils.Base64Encode(jobDetails.JobID)
                };
            }

            return(View("ViewLocationPopup", viewLocationViewModel));
        }