示例#1
0
        public async Task <IActionResult> Edit(int id, [Bind("LayerId,Public,Title,Url,WMSLayer")] Layer layer)
        {
            if (id != layer.LayerId)
            {
                return(NotFound());
            }
            var layerOld = await _context.Layers.Include(m => m.LayerUsers).Include(m => m.LayerChangeLogs).ThenInclude(m => m.ChangeLog).ThenInclude(m => m.User).Where(m => m.LayerId == id).FirstOrDefaultAsync();

            User me = UserHelper.GetCurrentUser(User, _context);

            // check if Layer is my userlayer or I am the Creator (first in changelog) or I am DM
            if (!User.IsInRole("DM"))
            {
                if (layerOld.LayerUsers.Where(m => m.UserId == me.UserId).Count() == 0)
                {
                    ChangeLogLayer chll = layer.LayerChangeLogs.Take(1).FirstOrDefault();
                    if (chll?.ChangeLog.User.UserId != me.UserId)
                    {
                        return(RedirectToAction("NotAllowed", "Home"));
                    }
                }
            }

            if (ModelState.IsValid)
            {
                try
                {
                    layerOld.Public   = layer.Public;
                    layerOld.Title    = layer.Title;
                    layerOld.Url      = layer.Url;
                    layerOld.WMSLayer = layer.WMSLayer;

                    ChangeLog cl = new ChangeLog()
                    {
                        Log = "Changed Layer " + layer.Title, User = me
                    };
                    ChangeLogLayer cll = new ChangeLogLayer()
                    {
                        ChangeLog = cl, Layer = layer
                    };
                    layerOld.LayerChangeLogs.Add(cll);

                    _context.Update(layerOld);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!LayerExists(layer.LayerId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(layer));
        }
示例#2
0
        public async Task <IActionResult> Edit(string?id, [Bind("UserId, FirstName, Name, Email, enabled")] EditUserViewModel edituserVM)
        {
            User me = UserHelper.GetCurrentUser(User, db);

            if ((!User.IsInRole("DM")) && (me.UserId != edituserVM.UserId))
            {
                return(RedirectToAction("NotAllowed", "Home"));
            }
            if (!User.IsInRole("DM"))
            {
                id = me.UserId;
            }
            if (id != edituserVM.UserId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    User oldUser = await db.Users.FindAsync(edituserVM.UserId);

                    oldUser.FirstName = edituserVM.FirstName;
                    oldUser.Name      = edituserVM.Name;
                    oldUser.Email     = edituserVM.Email;

                    db.Update(oldUser);
                    await db.SaveChangesAsync();


                    // change it in keycloak
                    List <UserPoco> ups = await GetAllUsers(false);

                    string access_token = GetAdminAccessToken();
                    if (access_token != "Error")
                    {
                        var client = new RestClient(Configuration["Jwt:Url"] + "/auth/admin/realms/" + Configuration["Jwt:Realm"] + "/users/" + ups.Where(m => m.username == edituserVM.UserId).FirstOrDefault().id);
                        client.Timeout = -1;
                        var request = new RestRequest(Method.PUT);
                        request.AddHeader("Content-Type", "application/json");
                        request.AddParameter("application/json", "{\"firstName\": \"" + oldUser.FirstName + "\",\r\n  \"lastName\": \"" + oldUser.Name + "\",\r\n  \"email\": \"" + oldUser.Email + "\", \"enabled\": \"" + edituserVM.enabled + "\"}", ParameterType.RequestBody);
                        request.AddHeader("Authorization", "Bearer " + access_token);
                        IRestResponse response = client.Execute(request);
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
                return(RedirectToAction(nameof(Index)));
            }

            return(View(edituserVM));
        }
        public async Task<IActionResult> Edit(Guid id, [Bind("GroupId,GroupName,ID_Extern,GroupStatusId, CreatorId")] Group mgroup)
        {
            if (id != mgroup.GroupId)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                Status ok = await _context.Statuses.Where(m => m.Id == StatusEnum.changed).FirstOrDefaultAsync();
                mgroup.StatusId = ok.Id;

                // if group has Gruppe bereit -> change the corresponding projects to Bereit
                if (mgroup.GroupStatusId == GroupStatusEnum.Gruppe_bereit)
                {
                    List<ProjectGroup> pgs = await _context.ProjectsGroups.Where(m => m.GroupId == mgroup.GroupId).ToListAsync();

                    foreach (ProjectGroup pg in pgs)
                    {
                        Project p = await _context.Projects.Include(m=>m.ProjectStatus).Where(m => m.ProjectId == pg.ProjectId).FirstOrDefaultAsync();
                        if (p.ProjectStatus.Id == ProjectStatusEnum.Projekt_neu)
                        {
                            ProjectStatus bereit = await _context.ProjectStatuses.Where(m => m.Id == ProjectStatusEnum.Projekt_bereit).FirstAsync();
                            p.ProjectStatus = bereit;
                            _context.Entry(p).State = EntityState.Modified;
                        }
                    }
                }

                try
                {
                    _context.Update(mgroup);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!GroupExists(mgroup.GroupId))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }
            ViewData["GroupStatusId"] = new SelectList(_context.GroupStatuses, "Id", "Description", mgroup.GroupStatusId);
            ViewData["StatusId"] = new SelectList(_context.Statuses, "Id", "Descrpition", mgroup.StatusId);
            return View(mgroup);
        }