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()); }
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()); }
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 })); }
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(); }