示例#1
0
        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));
        }
示例#2
0
        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
            });
        }
示例#3
0
        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);
        }