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 void CreateClassTable(string tableName)
        {
            var subjectsTable = await CloudTableUtilities.CreateTableAsync(tableName);

            var            classSubjectsNamesEntity = new SubjectsTable();
            TableOperation insertOperation          = TableOperation.InsertOrReplace(classSubjectsNamesEntity);

            classSubjectsNamesEntity.PartitionKey = ClassSubjects;
            classSubjectsNamesEntity.RowKey       = ClassSubjects;
            await subjectsTable.ExecuteAsync(insertOperation);

            var classSubjectsNecessityEntity = new SubjectsTable();

            insertOperation = TableOperation.InsertOrReplace(classSubjectsNecessityEntity);
            classSubjectsNecessityEntity.PartitionKey = Necessity;
            classSubjectsNecessityEntity.RowKey       = Necessity;
            await subjectsTable.ExecuteAsync(insertOperation);
        }