//public async Task<APIGatewayProxyResponse> FunctionHandler(JObject request, ILambdaContext context) public async Task <List <Classtime> > FunctionHandler(JObject request, ILambdaContext context) { String buildingLetter = (String)request["BuildingLetter"]; String roomNumber = (String)request["RoomNumber"]; String day = (String)request["Day"]; BCSearchParams bcSearchParams = new BCSearchParams(buildingLetter, roomNumber, day); TableHandlerRoomFinder tableHandler = new TableHandlerRoomFinder(); List <Classtime> classtimes = await tableHandler.ScanForRooms(bcSearchParams); //Dictionary<String, object> headers = new Dictionary<string, object>(); //headers.Add("Access-Control-Allow-Origin", "*"); //Dictionary<String, object> response = new Dictionary<string, object>(); //response.Add("statusCode", 200); //response.Add("headers", headers); //response.Add("body", classtimes); return(classtimes); //return CreateResponse(classtimes); }
public async Task <List <Classtime> > ScanForRooms(BCSearchParams bcSearchParams) { String variableBuildingLetter = ":v_" + ClasstimeAsString.building; String variableRoomNumber = ":v_" + ClasstimeAsString.roomNumber; String variableDay = ":v_" + ClasstimeAsString.day; ScanRequest scanRequest = new ScanRequest() { TableName = base.tableName, ExpressionAttributeValues = new Dictionary <string, AttributeValue>() { { variableBuildingLetter, new AttributeValue() { S = bcSearchParams.buildingLetter } }, { variableRoomNumber, new AttributeValue() { S = bcSearchParams.roomNumber } }, { variableDay, new AttributeValue() { S = bcSearchParams.day } } }, //ExperssionAttributeNames allows me to swap using "#d" instead of "day", //since "day" is a key word for the request ExpressionAttributeNames = new Dictionary <string, string>() { { "#d", ClasstimeAsString.day } }, FilterExpression = ClasstimeAsString.building + " = " + variableBuildingLetter + " and " + ClasstimeAsString.roomNumber + " = " + variableRoomNumber + " and " + "#d" + " = " + variableDay }; ScanResponse scanResponse = await dynamodbClient.ScanAsync(scanRequest); Console.WriteLine("Number of Classtimes Found For classroom {0}: {1}", bcSearchParams.buildingLetter + bcSearchParams.roomNumber, scanResponse.Count); List <Classtime> classtimes = new List <Classtime>(); foreach (Dictionary <string, AttributeValue> values in scanResponse.Items) { Classtime classtime = new Classtime() { id = values[ClasstimeAsString.id].S, building = values[ClasstimeAsString.building].S, roomNumber = values[ClasstimeAsString.roomNumber].S, day = values[ClasstimeAsString.day].S, startTime = Int32.Parse(values[ClasstimeAsString.startTime].N), endTime = Int32.Parse(values[ClasstimeAsString.endTime].N), classCode = values[ClasstimeAsString.classCode].S }; classtimes.Add(classtime); } return(classtimes); }