コード例 #1
0
        public async Task <IActionResult> GetItemByUID(string uid)
        {
            //Task<ActionResult<Models.Counterparties.Counterparty>>

            //Найти юзера по авторизац.токену. claimsPrincipal.Identity тут не помог (там визуально ничего нет)
            var user = await UserFromClaim.GetUser(_UserManager, HttpContext.User);

            if (user == null)
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.InvalidLoginRequest)));
            }

            //Если пользователь не состоит в организации, то доступ к справочникам и документам ему закрыт - вначале организацию надо или создать,
            //или вступить в одну из существующих
            if (string.IsNullOrEmpty(user.OrganizationUID))
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.UserIsNotAMemberOfAnyOrganization)));
            }

            //TODO@: у тек.пользователя взять организацию OrgUID, она критически необходима для поиска

            //var todoItem = await _context.TodoItems.FindAsync(id);

            //if (todoItem == null)
            //{
            //	return NotFound();
            //}

            //return todoItem;

            return(NotFound());
        }
コード例 #2
0
        public async Task <IActionResult> GetItemByName(string name, SearchOption searchOption)
        {
            var user = await UserFromClaim.GetUser(_UserManager, HttpContext.User);

            if (user == null)
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.InvalidLoginRequest)));
            }

            if (string.IsNullOrEmpty(user.OrganizationUID))
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.UserIsNotAMemberOfAnyOrganization)));
            }

            return(NotFound());
        }
コード例 #3
0
        public async Task <IActionResult> Create([FromBody] OrganizationCreateRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.InvalidPayload, false)));
            }

            //Найти юзера по авторизац.токену. claimsPrincipal.Identity тут не помог (там визуально ничего нет)
            var user = await UserFromClaim.GetUser(_UserManager, HttpContext.User);

            if (user == null)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.InvalidLoginRequest, false)));
            }

            if (!user.EmailConfirmed)
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.EmailNotConfirmed, false)));
            }

            //Если пользователь состоит в организации создавать новую нельзя. Чтобы создать,
            //нужно вначале покинуть организацию. Если он создает, то автоматом становится ее членом.
            if (!string.IsNullOrEmpty(user.OrganizationUID))
            {
                return(BadRequest(new OrganizationCreateResponse(Resource.UserIsMemberOfOrganization, false)));
            }

            var org = await _OrganizationStore.Create(request.Name, request.FullName, user.UID);

            //также нужно прописать в юзера в свойство что он уже создал организацию...
            //TODO@: плохо с транзакционностью - можно создать организацию, но упасть на изменении юзера (не пропишется ему свойство)

            await _UserStoreEx.SetUserOrganizationAsync(user, org.UID);

            return(Ok(new OrganizationCreateResponse()
            {
                Success = true,
                UID = org.UID
            }));
        }
コード例 #4
0
        public async Task <IActionResult> GetMembers(OrganizationMemberSearchParams options)
        {
            var user = await UserFromClaim.GetUser(_UserManager, HttpContext.User);

            if (user == null)
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.InvalidLoginRequest)));
            }

            if (string.IsNullOrEmpty(user.OrganizationUID))
            {
                return(BadRequest(UserLoginResponse.Failed(Resource.UserIsNotAMemberOfAnyOrganization)));
            }

            string orgUID = options.OrganizationUID;

            //TODO@: реализовать получение списка сотрудников по фильтру из базы

            OrganizationMember m1 = new OrganizationMember
            {
                Email           = "*****@*****.**",
                OrganizationUID = orgUID,
                Name            = "Borris Johnson"
            };

            OrganizationMember m2 = new OrganizationMember
            {
                Email           = "*****@*****.**",
                OrganizationUID = orgUID,
                Name            = "John Biden"
            };


            OrganizationMember[] result = { m1, m2 };

            return(CreatedAtAction(nameof(GetMembers), result));

            //return NotFound();
        }