示例#1
0
        /// <summary>
        /// Change the settings for layer visible or not in settings
        /// </summary>
        /// <param name="id">LayerId</param>
        /// <param name="visible">Visible yes / no</param>
        /// <returns></returns>
        public async Task <IActionResult> ChangeEnabledLayer(int id, bool visible)
        {
            string  projectid = HttpContext.Session.GetString("Project");
            Project p         = _context.Projects.Find(new Guid(projectid));
            User    me        = UserHelper.GetCurrentUser(User, _context);
            Layer   l         = _context.Layers.Find(id);

            if ((p != null) && (me != null) && (l != null))
            {
                UserHasProjectLayer upl = _context.UsersHaveProjectLayers.Where(m => m.User == me && m.Project == p && m.Layer == l).FirstOrDefault();
                if (upl == null)
                {
                    upl = new UserHasProjectLayer()
                    {
                        Layer = l, Project = p, User = me, Visible = visible, Transparency = 1
                    };
                    _context.UsersHaveProjectLayers.Add(upl);
                }
                else
                {
                    upl.Visible = visible;
                    _context.Entry(upl).State = EntityState.Modified;
                }
                await _context.SaveChangesAsync();

                return(Content("OK"));
            }
            return(Content("Error"));
        }
        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);
        }
        public async Task <IActionResult> Delete(Guid id)
        {
            User user = Helpers.UserHelper.GetCurrentUser(User, db);

            ReferenceGeometry rg = await db.Geometries
                                   .Include(m => m.ProjectGroup).ThenInclude(pg => pg.Group).ThenInclude(g => g.GroupUsers)
                                   .Where(m => m.GeometryId == id).FirstOrDefaultAsync();

            if (rg == null)
            {
                return(StatusCode(404));
            }
            // No right for it, User is not in Group

            if ((rg.ProjectGroup.Group.GroupUsers.Any(m => m.UserId == user.UserId)) || User.IsInRole("DM"))
            {
                rg.StatusId = StatusEnum.deleted;
                ChangeLog cl = new ChangeLog()
                {
                    Log = "deleted geometry", User = user
                };
                db.ChangeLogs.Add(cl);
                ChangeLogGeometry clg = new ChangeLogGeometry()
                {
                    ChangeLog = cl, Geometry = rg
                };
                db.ChangeLogsGeometries.Add(clg);

                db.Entry(rg).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(Content("OK"));
            }

            // No right for it, User is not in Group

            return(StatusCode(403));
        }
        // GET: Users/Edit/5
        public async Task <IActionResult> Edit(string?id)
        {
            User me = UserHelper.GetCurrentUser(User, db);

            if (!User.IsInRole("DM"))
            {
                id = me.UserId;
            }
            else if (id == null)
            {
                id = me.UserId;
            }

            if (id == null)
            {
                return(NotFound());
            }

            var edituser = await db.Users.FindAsync(id);

            List <UserPoco> ups = await GetAllUsers();

            if (edituser == null)
            {
                if (ups.Where(m => m.username == id).Any())
                {
                    UserPoco up = ups.Where(m => m.username == id).First();
                    edituser = new User();

                    edituser.Name      = up.lastName;
                    edituser.FirstName = up.firstName;
                    edituser.Email     = up.email;
                    edituser.UserId    = up.username;

                    edituser.Status = db.Statuses.Where(m => m.Id == StatusEnum.unchanged).FirstOrDefault();

                    db.Entry(edituser).State = EntityState.Added;
                    db.Users.Add(edituser);
                    await db.SaveChangesAsync();
                }
            }

            EditUserViewModel euvm = new EditUserViewModel()
            {
                UserId = edituser.UserId, Email = edituser.Email, FirstName = edituser.FirstName, Name = edituser.Name, enabled = ups.Where(m => m.username == edituser.UserId).FirstOrDefault().enabled, roles = ups.Where(m => m.username == edituser.UserId).FirstOrDefault().roles
            };

            return(View(euvm));
        }
        public static async Task CreateDynamicView(BioDivContext db, ReferenceGeometry rg, ProjectGroup g, List <Group> myGroups, GeometrieViewModel gvm)
        {
            foreach (Record r in rg.Records.Where(m => m.StatusId != StatusEnum.deleted))
            {
                bool isReadOnly = true;
                if (g == null)
                {
                    isReadOnly = false;
                }
                else if ((g.GroupStatusId != GroupStatusEnum.Gruppendaten_gueltig) && (g.GroupStatusId != GroupStatusEnum.Gruppendaten_erfasst))
                {
                    if (myGroups.Where(m => m.GroupId == r.ProjectGroupGroupId).Count() > 0)
                    {
                        isReadOnly = false;
                    }
                }

                RecordViewModel rvm = new RecordViewModel()
                {
                    Record = r
                };

                List <PropertyVm> dynamicForm = new List <PropertyVm>();

                // BDC Guid
                PropertyVm dynamicFieldGUID = new PropertyVm(typeof(string), "Field_" + r.RecordId);
                dynamicFieldGUID.DisplayName         = "BDCGuid";
                dynamicFieldGUID.Value               = r.BDCGuid;
                dynamicFieldGUID.GetCustomAttributes = () => new object[] { new Helpers.FormFactory.GuidAttribute() };
                dynamicForm.Add(dynamicFieldGUID);

                if (r.Form != null)
                {
                    foreach (FormField ff in r.Form.FormFormFields.Select(fff => fff.FormField).OrderBy(m => m.Order))
                    {
                        FormField origFormField = ff;
                        if (ff.PublicMotherFormField != null)
                        {
                            origFormField = ff.PublicMotherFormField;
                        }

                        if (origFormField.FieldTypeId == FieldTypeEnum.Text)
                        {
                            PropertyVm dynamicField = new PropertyVm(typeof(string), "Field_" + ff.FormFieldId.ToString());
                            dynamicField.DisplayName = origFormField.Title;
                            TextData td = r.TextData.Where(m => m.FormField == ff).FirstOrDefault();
                            if (td != null)
                            {
                                dynamicField.Value = td.Value;
                            }

                            dynamicField.NotOptional = ff.Mandatory;
                            dynamicForm.Add(dynamicField);
                        }
                        else if (origFormField.FieldTypeId == FieldTypeEnum.DateTime)
                        {
                            PropertyVm dynamicField = new PropertyVm(typeof(DateTime), "Field_" + ff.FormFieldId.ToString());
                            dynamicField.DisplayName = origFormField.Title;
                            TextData td   = r.TextData.Where(m => m.FormField == ff).FirstOrDefault();
                            DateTime myDT = new DateTime();
                            try
                            {
                                myDT = DateTime.ParseExact(td.Value.Replace("{0:", " ").Replace("}", ""), formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
                            }
                            catch (Exception e)
                            {
                            }

                            if (td != null)
                            {
                                dynamicField.Value = myDT;
                            }

                            dynamicField.NotOptional = ff.Mandatory;
                            dynamicForm.Add(dynamicField);
                        }
                        else if (origFormField.FieldTypeId == FieldTypeEnum.Choice)
                        {
                            PropertyVm dynamicField = new PropertyVm(typeof(string), "Field_" + ff.FormFieldId.ToString());
                            dynamicField.DisplayName = origFormField.Title;
                            TextData td = r.TextData.Where(m => m.FormField == ff).FirstOrDefault();
                            if (td != null)
                            {
                                dynamicField.Value = td.Value;
                            }

                            await db.Entry(origFormField).Collection(m => m.FieldChoices).LoadAsync();

                            if (origFormField.FieldChoices != null)
                            {
                                List <string> choices = new List <string>();
                                foreach (FieldChoice fc in origFormField.FieldChoices.OrderBy(m => m.Order))
                                {
                                    choices.Add(fc.Text);
                                }
                                dynamicField.Choices = choices;
                            }
                            dynamicField.NotOptional = ff.Mandatory;
                            dynamicForm.Add(dynamicField);
                        }
                        else if (origFormField.FieldTypeId == FieldTypeEnum.Boolean)
                        {
                            PropertyVm dynamicField = new PropertyVm(typeof(bool), "Field_" + ff.FormFieldId.ToString());
                            dynamicField.DisplayName = origFormField.Title;
                            BooleanData bd = r.BooleanData.Where(m => m.FormField == ff).FirstOrDefault();
                            if (bd != null)
                            {
                                dynamicField.Value = bd.Value;
                            }
                            dynamicField.NotOptional         = ff.Mandatory;
                            dynamicField.GetCustomAttributes = () => new object[] { new FormFactory.Attributes.LabelOnRightAttribute() };
                            dynamicForm.Add(dynamicField);
                        }
                    }

                    PropertyVm dynamicHiddenField = new PropertyVm(typeof(string), "RecordId");
                    dynamicHiddenField.Value       = r.RecordId.ToString();
                    dynamicHiddenField.NotOptional = true;
                    dynamicHiddenField.IsHidden    = true;
                    dynamicForm.Add(dynamicHiddenField);

                    if (isReadOnly)
                    {
                        foreach (PropertyVm pv in dynamicForm)
                        {
                            pv.Readonly = true;
                        }
                    }
                    rvm.Readonly    = isReadOnly;
                    rvm.DynamicForm = dynamicForm;
                    rvm.Group       = r.ProjectGroup.Group;
                    gvm.Records.Add(rvm);
                }
            }

            return;
        }
        public async Task <IActionResult> Delete(Guid id)
        {
            User user = Helpers.UserHelper.GetCurrentUser(User, db);

            Record r = await db.Records
                       .Include(m => m.ProjectGroup).ThenInclude(pg => pg.Group).ThenInclude(g => g.GroupUsers)
                       .Where(m => m.RecordId == id).FirstOrDefaultAsync();

            if (r == null)
            {
                return(StatusCode(404));
            }
            // No right for it, User is not in Group

            if ((r.ProjectGroup.Group.GroupUsers.Any(m => m.UserId == user.UserId)) || User.IsInRole("DM"))
            {
                r.StatusId = StatusEnum.deleted;
                ChangeLog cl = new ChangeLog()
                {
                    Log = "deleted record", User = user
                };
                db.ChangeLogs.Add(cl);
                ChangeLogRecord clr = new ChangeLogRecord()
                {
                    ChangeLog = cl, Record = r
                };
                db.ChangeLogsRecords.Add(clr);

                db.Entry(r).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(Content("OK"));
            }

            // No right for it, User is not in Group

            return(StatusCode(403));
        }