// PATCH tables/User/48D68C86-6EA6-4C25-AA33-223FC9A27959 public async Task <User> PatchUser(string id, Delta <User> patch) { var useraccount = await context.FestiUsers.Include(elem => elem.UserAccount).Where(elem => elem.Id == id) .Select(elem => elem.UserAccount).FirstOrDefaultAsync(); object post; object housenumber; object Email; object PhoneNumber; object Role; patch.TrySetPropertyValue("UserAccount", useraccount); patch.TryGetPropertyValue("Role", out Role); if (useraccount != null) { if (patch.TryGetPropertyValue("PhoneNumber", out PhoneNumber)) { useraccount.PhoneNumber = PhoneNumber.ToString(); } if (patch.TryGetPropertyValue("Email", out Email)) { patch.GetEntity().UserAccount.UserName = Email.ToString(); } if (Role != null) { var list = await _authManager.GetRolesAsync(useraccount.Id); await _authManager.RemoveFromRolesAsync(useraccount.Id, list.ToArray()); await _authManager.AddToRoleAsync(useraccount.Id, Role.ToString()); } } patch.TryGetPropertyValue("HouseNumber", out housenumber); patch.TryGetPropertyValue("PostalCode", out post); return(await UpdateAsync(id, patch)); }
// POST tables/Inspector public async Task <IHttpActionResult> PostInspector(Inspector item) { var exist = await _authManager.FindByEmailAsync(item.Email); if (exist != null) { Debug.WriteLine("User email Bestaat al"); return(null); } if (_geodanHelper.Error == null) { var result = await _geodanHelper.GetDocByAdres(null, null, item.HouseNumber, item.PostalCode); item.GeodanAdresId = result.id; item.Locx = result.location.X; item.Locy = result.location.Y; } else { item.GeodanAdresId = "InvalidID"; item.Locx = 1.0; item.Locy = 1.0; } item.UserAccount = new UserAccount { UserName = item.Email, Email = item.Email, PhoneNumber = item.Phone }; await _authManager.CreateAsync(item.UserAccount, "password"); await _authManager.AddToRoleAsync(item.UserAccount.Id, "Inspector"); Inspector current = await InsertAsync(item); await _emailService.SendChangePasswordMailAsync(item); return(CreatedAtRoute("Tables", new { id = current.Id }, current)); }