public async Task <IActionResult> ServiceRequestDetails(string id)
        {
            var serviceRequestDetails = await _serviceRequestOperations.GetServiceRequestByRowKey(id);

            // Access Check
            if (HttpContext.User.IsInRole(Roles.Engineer.ToString()) &&
                serviceRequestDetails.ServiceEngineer != HttpContext.User.GetCurrentUserDetails().Email)
            {
                throw new UnauthorizedAccessException();
            }

            if (HttpContext.User.IsInRole(Roles.User.ToString()) &&
                serviceRequestDetails.PartitionKey != HttpContext.User.GetCurrentUserDetails().Email)
            {
                throw new UnauthorizedAccessException();
            }

            var serviceRequestAuditDetails = await _serviceRequestOperations.GetServiceRequestAuditByPartitionKey(
                serviceRequestDetails.PartitionKey + "-" + id);

            // Select List Data
            var masterData = await _masterData.GetMasterDataCacheAsync();

            ViewBag.VehicleTypes     = masterData.Values.Where(p => p.PartitionKey == MasterKeys.VehicleType.ToString()).ToList();
            ViewBag.VehicleNames     = masterData.Values.Where(p => p.PartitionKey == MasterKeys.VehicleName.ToString()).ToList();
            ViewBag.Status           = Enum.GetValues(typeof(Status)).Cast <Status>().Select(v => v.ToString()).ToList();
            ViewBag.ServiceEngineers = await _userManager.GetUsersInRoleAsync(Roles.Engineer.ToString());

            return(View(new ServiceRequestDetailViewModel
            {
                ServiceRequest = _mapper.Map <ServiceRequest, UpdateServiceRequestViewModel>(serviceRequestDetails),
                ServiceRequestAudit = serviceRequestAuditDetails.OrderByDescending(p => p.Timestamp).ToList()
            }));
        }
        public async Task <IActionResult> ServiceRequestDetails(string id)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(RedirectToAction("Error", "Home", new { id = "404" }));
            }

            ServiceRequest serviceRequestDetails = await _serviceRequestOperations
                                                   .GetServiceRequestByRowKey(rowKey : id);

            if (HttpContext.User.IsInRole(Roles.Engineer.ToString()) &&
                (serviceRequestDetails.ServiceEngineer != HttpContext.User.GetCurrentUserDetails().Email))
            {
                throw new UnauthorizedAccessException();
            }

            if (HttpContext.User.IsInRole(Roles.User.ToString()) &&
                serviceRequestDetails.PartitionKey != HttpContext.User.GetCurrentUserDetails().Email)
            {
                throw new UnauthorizedAccessException();
            }

            var serviceRequestAuditDetails = await _serviceRequestOperations
                                             .GetServiceRequestAuditByPartitionKey(serviceRequestDetails.PartitionKey + "-" + id);

            var masterData = await _masterData.GetMasterDataCacheAsync();

            ViewBag.VehicleTypes     = masterData.Values.Where(p => p.PartitionKey == MasterKeys.VehicleType.ToString()).ToList();
            ViewBag.VehicleNames     = masterData.Values.Where(p => p.PartitionKey == MasterKeys.VehicleName.ToString()).ToList();
            ViewBag.Status           = Enum.GetValues(typeof(Status)).Cast <Status>().Select(v => v.ToString()).ToList();
            ViewBag.ServiceEngineers = await _userManager.GetUsersInRoleAsync(Roles.Engineer.ToString());



            return(View(new ServiceRequestDetailViewModel
            {
                ServiceRequest = _mapper.Map <UpdateServiceRequestViewModel>(serviceRequestDetails),
                ServiceRequestAudit = serviceRequestAuditDetails.OrderByDescending(p => p.RequestedDate).ToList()
            }));
        }