示例#1
0
        public static async Task <string> SignIn(

            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage request,
            [Table("UsersTable")] CloudTable usersTable)
        {
            OperationResult operationResult = new OperationResult();
            UserRequest     userRequest     = await Utilities.ExtractContent <UserRequest>(request);

            TableQuery <UsersTable> query = new TableQuery <UsersTable>().Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, userRequest.userId));

            var usersQueryResult = await usersTable.ExecuteQuerySegmentedAsync(query, null);

            if (!usersQueryResult.Results.Any())
            {
                operationResult.UpdateFailure(ErrorMessages.userNotExist);
            }
            else
            {
                var user = usersQueryResult.Results.First();

                if (user.UserPassword == userRequest.userPassword)
                {
                    List <string> Info;

                    switch (user.UserType)
                    {
                    case ProjectConsts.ParentType:
                        Info = user.ChildrenIds.Split(ProjectConsts.delimiter).ToList();
                        break;

                    case ProjectConsts.TeacherType:
                        Info = UsersTableUtilities.GetSubjectsTableNamesForTeacher(user);
                        break;

                    default:
                        Info = UsersTableUtilities.GetSubjectsTableNamesForStudent(user);
                        break;
                    }

                    operationResult.UpdateData(new { userName = user.RowKey, userType = user.UserType, Info });
                }
                else
                {
                    operationResult.UpdateFailure(ErrorMessages.wrongPassword);
                }
            }

            return(JsonConvert.SerializeObject(operationResult));
        }