public async Task <IActionResult> AddOwner(int assetId, [FromBody] AddOwnerRequest addPerson) { var message = mapper.Map <AddOwnerRequest, AddOwner>(addPerson); message.AssetId = assetId; var model = await mediator.Send(message); return(Created("api/person", model)); }
public static async Task <AddOwnerResponse> Run([HttpTrigger(AuthorizationLevel.Function, "post")] AddOwnerRequest request, TraceWriter log) { GraphServiceClient client = ConnectADAL.GetGraphClient(); int idx = request.LoginName.LastIndexOf('|'); if (idx > 0) { request.LoginName = request.LoginName.Substring(idx + 1); } var ownerQuery = await client.Users .Request() .Filter($"userPrincipalName eq '{request.LoginName}'") .GetAsync(); var owner = ownerQuery.FirstOrDefault(); bool added = false; if (owner != null) { try { // And if any, add it to the collection of group's owners log.Info($"Adding user {request.LoginName} to Owners group for {request.GroupId}"); await client.Groups[request.GroupId].Owners.References.Request().AddAsync(owner); if (request.AddOption == AddOwnerOption.AddAsOwnerAndMember) { log.Info($"Adding user {request.LoginName} to Members group for {request.GroupId}"); await client.Groups[request.GroupId].Members.References.Request().AddAsync(owner); } added = true; } catch (ServiceException ex) { if (ex.Error.Code == "Request_BadRequest" && ex.Error.Message.Contains("added object references already exist")) { // Skip any already existing owner } else { throw; } } } return(new AddOwnerResponse() { Added = added }); }
private async Task <OwnerViewModel> CreateOwnerWithApi(AddOwnerRequest request) { var assetId = await _addMinimalAssetHelper.AddMinimalAsset(); var json = JsonConvert.SerializeObject(request); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); var response = await Client.PostAsync($"api/assets/{assetId}/owner", stringContent); response.EnsureSuccessStatusCode(); var data = await response.Content.ReadAsStringAsync(); var viewModel = JsonConvert.DeserializeObject <OwnerViewModel>(data); return(viewModel); }