public static async Task <string> SetClassSchedule( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage request, [Table("ClassesTable")] CloudTable classesTable, ILogger log) { OperationResult result = new OperationResult(); CloudTable scheduleTable; ScheduleSetter newClassInfo = await Utilities.ExtractContent <ScheduleSetter>(request); var classesEntities = CloudTableUtilities.getTableEntityAsync <ClassesTable>(classesTable).Result; foreach (var classEntity in classesEntities) { if (classEntity.subjectsTableName == newClassInfo.className) { if (!CloudTableUtilities.TableExist($"{classEntity.subjectsTableName}Schedule")) { scheduleTable = await CloudTableUtilities.CreateTableAsync($"{classEntity.subjectsTableName}Schedule"); classEntity.ScheduleTableName = $"{classEntity.subjectsTableName}Schedule"; } else { scheduleTable = CloudTableUtilities.OpenTable($"{classEntity.subjectsTableName}Schedule"); } var daysInfo1 = typeof(ScheduleSetter).GetProperties().ToList(); var daysInfo = typeof(ScheduleSetter).GetProperties().Where(x => x.Name != "className").ToList(); foreach (var dayinfo in daysInfo) { var dayEnity = new ScheduleTable(); var tableColumns = typeof(ScheduleTable).GetProperties().Where(x => x.Name.Contains(SubjectsTableUtilities.SubjectPropertyPrefix)).ToList(); var subjectsList = (List <string>)dayinfo.GetValue(newClassInfo); foreach (var subject in subjectsList) { var col = tableColumns[0]; tableColumns.RemoveAt(0); col.SetValue(dayEnity, subject); } dayEnity.PartitionKey = dayinfo.Name; dayEnity.RowKey = dayinfo.Name; await CloudTableUtilities.AddTableEntity(scheduleTable, dayEnity); } classEntity.LastTeacherUpdate = new DateTime(2000, 1, 01, 0, 0, 0).ToUniversalTime(); await CloudTableUtilities.AddTableEntity(classesTable, classEntity); } } return(JsonConvert.SerializeObject(result)); }
public static async Task <string> SignUp( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage request, [Table("UsersTable")] CloudTable usersTable) { OperationResult operationResult = new OperationResult(); string childrenIds = null; UserRequest newUserRequest = await Utilities.ExtractContent <UserRequest>(request); TableQuery <UsersTable> query = new TableQuery <UsersTable>(); TableQuerySegment <UsersTable> usersQueryResult = await usersTable.ExecuteQuerySegmentedAsync(query, null); if (!UsersTableUtilities.ValidateUserNotExist(usersQueryResult, newUserRequest, operationResult)) { return(JsonConvert.SerializeObject(operationResult)); } if (newUserRequest.userType == ProjectConsts.ParentType) { if (newUserRequest.childrenIds == null || newUserRequest.childrenIds.Count == 0) { operationResult.UpdateFailure(ErrorMessages.NoChildIdProvided); return(JsonConvert.SerializeObject(operationResult)); } childrenIds = string.Join(ProjectConsts.delimiter, newUserRequest.childrenIds); if (!UsersTableUtilities.ValidateChildrenIdExist(usersQueryResult, newUserRequest, operationResult)) { return(JsonConvert.SerializeObject(operationResult)); } } if (newUserRequest.userType == ProjectConsts.TeacherType) { newUserRequest.userName = UsersTableUtilities.GetUniqueName(newUserRequest.userName); } if (newUserRequest.userType == ProjectConsts.StudentType) { var tableExist = CloudTableUtilities.TableExist(newUserRequest.teacherUser + newUserRequest.classId); if (!tableExist) { operationResult.UpdateFailure(string.Format(ErrorMessages.subjectTableNotExist)); return(JsonConvert.SerializeObject(operationResult)); } } var newUserEntity = new UsersTable() { UserType = newUserRequest.userType, UserEmail = newUserRequest.userEmail, UserPassword = newUserRequest.userPassword, TeacherName = newUserRequest.teacherUser, ClassId = newUserRequest.classId, ChildrenIds = childrenIds }; await CloudTableUtilities.AddTableEntity(usersTable, newUserEntity, newUserRequest.userId, newUserRequest.userName); if (newUserRequest.userType == ProjectConsts.TeacherType) { operationResult.UpdateData(newUserEntity.RowKey); } if (newUserRequest.userType == ProjectConsts.StudentType) { var deviceConnectionString = await IotDeviceFunctions.AddDeviceAsync(newUserRequest.userId); var subjectsTablesNames = UsersTableUtilities.GetSubjectsTableNamesForStudent(newUserEntity); await SubjectsTableUtilities.AddStuentToClassTableAsync(subjectsTablesNames.First(), newUserRequest, operationResult); operationResult.UpdateData(new { deviceConnectionString, subjectsTablesNames }); } return(JsonConvert.SerializeObject(operationResult)); }