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)); }
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)); }
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)}"); }
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)}"); }