public IActionResult VehicleMaintenanceGet(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "vehicleMaintenance/{id}")] HttpRequest request,
            string id,
            [CosmosDB(ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            ILogger log,
            ClaimsPrincipal principal
            )
        {
            var uri      = UriFactory.CreateDocumentCollectionUri("MaintenanceDB", "VehicleMaintenance");
            var parsedId = Guid.Parse(id);
            var vehiclesAndMaintenance = client.CreateDocumentQuery <VehicleMaintenanceModel>(uri) //TODO async
                                         .Where(x => x.UserId == _b2cHelper.GetOid(principal) && (x.id == parsedId || x.VehicleId == parsedId)).ToList();
            var vehicle = _mapper.Map <VehicleMaintenanceDto>(vehiclesAndMaintenance.Single(vm => vm.Type == VehicleMaintenanceTypes.Vehicle));

            vehicle.Maintenance = _mapper
                                  .Map <IEnumerable <MaintenanceDto> >(vehiclesAndMaintenance.Where(vm => vm.Type == VehicleMaintenanceTypes.Maintenance))
                                  .OrderByDescending(m => m.Date);
            log.LogInformation($"Got all vehicles for user {_b2cHelper.GetOid(principal)}");
            return(new OkObjectResult(vehicle));
        }
Ejemplo n.º 2
0
        public IActionResult ReceiptAuthorizationGet(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "authorizeReceipt")] HttpRequest request,
            [Blob("receipts", FileAccess.ReadWrite, Connection = "UploadStorage")] CloudBlobContainer container,
            ILogger log,
            ClaimsPrincipal principal
            )
        {
            var blob   = container.GetBlockBlobReference($"{_b2cHelper.GetOid(principal)}/{request.Query["name"]}");
            var policy = new SharedAccessBlobPolicy
            {
                SharedAccessStartTime  = DateTime.UtcNow.AddMinutes(-5),
                SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1),
                Permissions            = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write
            };
            var sas = blob.GetSharedAccessSignature(policy);

            log.LogInformation($"Authorized access to receipt \"{request.Query["name"]}\" for user {_b2cHelper.GetOid(principal)}");
            var authorization = new ReceiptAuthorizationDto {
                Url = $"{blob.Uri}{sas}"
            };

            return(new OkObjectResult(authorization));
        }
Ejemplo n.º 3
0
 public void VehiclesPut(
     [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "vehicles")] VehicleDto request,
     [CosmosDB(
          databaseName: "MaintenanceDB",
          collectionName: "VehicleMaintenance",
          ConnectionStringSetting = "CosmosDBConnection")] out VehicleModel vehicle,
     ILogger log,
     ClaimsPrincipal principal
     )
 {
     vehicle = _mapper.Map <VehicleModel>(request);
     if (vehicle.id == Guid.Empty)
     {
         vehicle.id = Guid.NewGuid();
     }
     vehicle.UserId = _b2cHelper.GetOid(principal);
     vehicle.Type   = VehicleMaintenanceTypes.Vehicle;
     log.LogInformation($"Saving new vehicle id {vehicle.id} for user {_b2cHelper.GetOid(principal)}");
 }
Ejemplo n.º 4
0
        public async Task MaintenanceUpsert(
            [HttpTrigger(AuthorizationLevel.Anonymous, "put", Route = "maintenance")] MaintenanceDto request,
            [CosmosDB(ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            ILogger log,
            ClaimsPrincipal principal
            )
        {
            var uri     = UriFactory.CreateDocumentCollectionUri("MaintenanceDB", "VehicleMaintenance");
            var options = new RequestOptions {
                PartitionKey = new PartitionKey(_b2cHelper.GetOid(principal).ToString())
            };
            var maintenance = _mapper.Map <MaintenanceModel>(request);

            if (maintenance.id == Guid.Empty)
            {
                maintenance.id = Guid.NewGuid();
            }
            maintenance.UserId = _b2cHelper.GetOid(principal);
            maintenance.Type   = VehicleMaintenanceTypes.Maintenance;
            await client.UpsertDocumentAsync(uri, maintenance, options);

            log.LogInformation($"Upserting maintenance id {maintenance.id} for user {_b2cHelper.GetOid(principal)}");
        }