public ActionResult ResourceStructureParent_Select(long rsId)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                IQueryable <ResourceStructure> data = rsManager.GetAllResourceStructures();

                //List<ResourceStructureModel> resourceStructures = new List<ResourceStructureModel>();
                List <ResourceStructureParentChoosingModel> resourceStructures = new List <ResourceStructureParentChoosingModel>();

                foreach (ResourceStructure rs in data)
                {
                    if (rs.Id != rsId)
                    {
                        ResourceStructureParentChoosingModel temp = new ResourceStructureParentChoosingModel(rs);
                        temp.Locked   = this.CheckParentPossibility(rsId, rs.Id);
                        temp.RsId     = rsId;
                        temp.ParentId = rs.Id;
                        resourceStructures.Add(temp);
                    }
                }

                return(View("_chooseResourceStructure", new GridModel <ResourceStructureParentChoosingModel> {
                    Data = resourceStructures
                }));
            }
        }
        //Default Constructor
        public EditResourceModel()
        {
            ResourceStructures = new List <ResourceStructureModel>();

            ResourceStructureAttributeValues = new List <ResourceStructureAttributeValueModel>();
            TextValues = new List <Models.ResourceStructure.TextValueModel>();
            FileValues = new List <Models.ResourceStructure.FileValueModel>();

            using (ResourceStructureManager manager = new ResourceStructureManager()){
                Parent = new ResourceModel();
                foreach (RS.ResourceStructure rs in manager.GetAllResourceStructures().ToList())
                {
                    ResourceStructures.Add(new ResourceStructureModel(rs));
                }

                //BookingTimeGranularity
                Duration       = new TimeDuration();
                Duration.Value = 1;
                TimeUnits      = Enum.GetValues(typeof(SystemDefinedUnit)).Cast <SystemDefinedUnit>().ToList();


                ResourceConstraintModel = new ResourceConstraintModel();
                ResourceConstraints     = new List <ResourceConstraintModel>();
                DependencyConstraints   = new List <DependencyConstraintModel>();
                BlockingConstraints     = new List <BlockingConstraintModel>();
                QuantityConstraints     = new List <QuantityConstraintModel>();
            }
        }
        public ActionResult ChooseResourceStructureAttributes(long id)
        {
            ViewData["RSID"] = id;

            List <ResourceStructureParentChoosingModel> model = new List <ResourceStructureParentChoosingModel>();

            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                IQueryable <ResourceStructure> data = rsManager.GetAllResourceStructures();

                foreach (ResourceStructure rs in data)
                {
                    if (rs.Id != id)
                    {
                        ResourceStructureParentChoosingModel temp = new ResourceStructureParentChoosingModel(rs);
                        temp.Locked   = this.CheckParentPossibility(id, rs.Id);
                        temp.RsId     = id;
                        temp.ParentId = rs.Id;
                        model.Add(temp);
                    }
                }
            }

            return(PartialView("_chooseResourceStructureAttributes", model));
        }
        //public List<RSE.ResourceStructure> Children { get; set; }

        public void FillRSM()
        {
            using (ResourceStructureManager m = new ResourceStructureManager())
            {
                List <RSE.ResourceStructure> list = m.GetAllResourceStructures().ToList();
                foreach (RSE.ResourceStructure r in list)
                {
                    this.AllResourceStructures.Add(Convert(r));
                }
            }
        }
        public ActionResult RemoveParent(long id)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                ResourceStructure resourceStructure = rsManager.GetResourceStructureById(id);
                resourceStructure.Parent = null;
                rsManager.Update(resourceStructure);

                return(RedirectToAction("Edit", new { id = resourceStructure.Id }));
            }
        }
        public ActionResult Edit(long id)
        {
            ViewBag.Title = PresentationModel.GetViewTitleForTenant("Edit Resource Structures", this.Session.GetTenant());

            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                ResourceStructure resourceStructure = rsManager.GetResourceStructureById(id);
                ViewData["RSID"] = id;
                //ResourceStructureModel tem = new ResourceStructureModel();
                return(View("_editResourceStructure", new ResourceStructureModel(resourceStructure)));
            }
        }
        public ActionResult EditIsFileUsage(long usageId, string isFile)
        {
            using (ResourceStructureAttributeManager rsaManger = new ResourceStructureAttributeManager())
                using (ResourceStructureManager rsManager = new ResourceStructureManager())
                {
                    ResourceAttributeUsage usage = rsaManger.GetResourceAttributeUsageById(usageId);
                    usage.IsFileDataType = Convert.ToBoolean(isFile);
                    rsaManger.UpdateResourceAttributeUsage(usage);

                    ResourceStructure resourceStructure = rsManager.GetResourceStructureById(usage.ResourceStructure.Id);

                    return(View("_editResourceStructure", new ResourceStructureModel(resourceStructure)));
                }
        }
        public ActionResult AddParent(long id, long parentId)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                ResourceStructure parentResourceStructure = rsManager.GetResourceStructureById(parentId);
                ResourceStructure resourceStructure       = rsManager.GetResourceStructureById(id);

                resourceStructure.Parent = parentResourceStructure;
                rsManager.Update(resourceStructure);

                return(RedirectToAction("Edit", new { id = resourceStructure.Id }));
                // return View("_editResourceStructure", new ResourceStructureModel(resourceStructure));
            }
        }
        public ActionResult EditResourceStructure(ResourceStructureModel model)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            {
                //check name
                ResourceStructure temp = rsManager.GetResourceStructureByName(StringHelper.CutSpaces(model.Name));
                if (temp != null && temp.Id != model.Id)
                {
                    ModelState.AddModelError("NameExist", "Name already exist");
                }


                ResourceStructure rs = rsManager.GetResourceStructureById(model.Id);
                if (rs == null)
                {
                    ModelState.AddModelError("Errors", "ResourceStructure does not exist.");
                }

                if (rs.ResourceAttributeUsages.Select(a => a.ResourceStructureAttribute).ToList().Count() < 1)
                {
                    ModelState.AddModelError("Errors", "Resource Structure has no attributes.");
                }

                if (rs.Parent != null)
                {
                    if (rs.Parent.Id == rs.Id)
                    {
                        ModelState.AddModelError("Errors", "Parent resource structure can not be themselves.");
                    }
                }



                if (ModelState.IsValid)
                {
                    rs.Name        = model.Name;
                    rs.Description = model.Description;

                    rsManager.Update(rs);

                    return(RedirectToAction("ResourceStructure"));
                }
                else
                {
                    return(View("_editResourceStructure", model));
                }
            }
        }
        public ActionResult ResourceStructureUsages_Select(long id)
        {
            using (ResourceStructureManager rsm = new ResourceStructureManager())
            {
                ResourceStructure resourceStructure = rsm.GetResourceStructureById(id);

                List <ResourceStructureAttributeUsageModel> list = new List <ResourceStructureAttributeUsageModel>();
                foreach (ResourceAttributeUsage usage in resourceStructure.ResourceAttributeUsages)
                {
                    list.Add(new ResourceStructureAttributeUsageModel(usage.Id));
                }
                return(View("_showResourceStructureAttributes", new GridModel <ResourceStructureAttributeUsageModel> {
                    Data = list
                }));
            }
        }
Пример #11
0
        public ActionResult TreeFilterSchedules()
        {
            ResourceFilterModel model = new ResourceFilterModel();

            using (ResourceStructureManager rsManager = new ResourceStructureManager())
            //   using(ResourceManager rManager = new ResourceManager())
            {
                // List<SingleResource> singleResources = rManager.GetAllReesources().ToList();


                // List<ResourceModel> resources = new List<ResourceModel>();
                // singleResources.ForEach(r => resources.Add(new ResourceModel(r)));
                List <ResourceStructure> resourceStructures = rsManager.GetAllResourceStructures().ToList();

                foreach (ResourceStructure rs in resourceStructures)
                {
                    foreach (ResourceAttributeUsage usage in rs.ResourceAttributeUsages)
                    {
                        ResourceStructureAttribute attr = usage.ResourceStructureAttribute;
                        AttributeDomainItemsModel  item = new AttributeDomainItemsModel(attr);
                        if (item.DomainItems.Count != 0)
                        {
                            if (!model.TreeItems.Any(a => a.AttrId == item.AttrId))
                            {
                                model.TreeItems.Add(item);
                            }
                        }
                    }
                }

                /*foreach (ResourceModel r in resources)
                 * {
                 *  foreach (ResourceAttributeUsage usage in r.ResourceStructure.ResourceAttributeUsages)
                 *  {
                 *      ResourceStructureAttribute attr = usage.ResourceStructureAttribute;
                 *      AttributeDomainItemsModel item = new AttributeDomainItemsModel(attr);
                 *      if (item.DomainItems.Count != 0)
                 *      {
                 *          if (!model.TreeItems.Any(a => a.AttrId == item.AttrId))
                 *              model.TreeItems.Add(item);
                 *      }
                 *  }
                 * }*/
            }

            return(PartialView("_treeFilterSchedules", model));
        }
        public ActionResult Create(CreateResourceStructureModel model)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
                using (var pManager = new EntityPermissionManager())
                    using (var entityTypeManager = new EntityManager())
                        using (UserManager userManager = new UserManager())
                        {
                            //check name
                            ResourceStructure temp = rsManager.GetResourceStructureByName(StringHelper.CutSpaces(model.Name));
                            if (temp != null)
                            {
                                ModelState.AddModelError("NameExist", "Name already exist");
                            }

                            if (ModelState.IsValid)
                            {
                                ResourceStructure rS = rsManager.Create(model.Name, model.Description, null, null);

                                //Start -> add security ----------------------------------------
                                var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name);
                                userTask.Wait();
                                var user = userTask.Result;

                                Entity entityType = entityTypeManager.FindByName("ResourceStructure");

                                //31 is the sum from all rights:  Read = 1, Write = 4, Delete = 8, Grant = 16
                                int rights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete + (int)RightType.Grant;
                                pManager.Create(user, entityType, rS.Id, rights);


                                //End -> add security ------------------------------------------


                                ResourceStructureModel rSmodel = new ResourceStructureModel(rS);
                                rSmodel.FirstCreated = true;
                                return(View("_editResourceStructure", rSmodel));
                            }

                            else
                            {
                                return(View("_createResourceStructure", model));
                            }
                        }
        }
        public ResourceStructureModel(RSE.ResourceStructure resourceStructure)
        {
            Id                               = resourceStructure.Id;
            Name                             = resourceStructure.Name;
            Description                      = resourceStructure.Description;
            AllResourceStructures            = new List <ResourceStructureModel>();
            ResourceStructureAttributeUsages = new List <ResourceStructureAttributeUsageModel>();

            using (ResourceStructureManager rManager = new ResourceStructureManager())
                using (ResourceStructureAttributeManager rsaManager = new ResourceStructureAttributeManager())
                {
                    if (resourceStructure.Parent != null)
                    {
                        RSE.ResourceStructure parent = rManager.GetResourceStructureById(resourceStructure.Parent.Id);
                        Parent = Convert(parent);
                        //Get Parent attributes(usages) and add it to ResourceStructureAttributeUsages List
                        List <ResourceAttributeUsage> parentUsages = rsaManager.GetResourceStructureAttributeUsagesByRSId(Parent.Id);
                        if (parentUsages.Count > 0)
                        {
                            foreach (ResourceAttributeUsage usage in parentUsages)
                            {
                                ResourceStructureAttributeUsages.Add(new ResourceStructureAttributeUsageModel(usage.Id, usage.ResourceStructureAttribute.Id, Parent.Name));
                            }
                        }
                    }
                    else
                    {
                        Parent = null;
                    }


                    List <ResourceAttributeUsage> usages = rsaManager.GetResourceStructureAttributeUsagesByRSId(resourceStructure.Id);

                    if (usages.Count > 0)
                    {
                        foreach (ResourceAttributeUsage usage in usages)
                        {
                            ResourceStructureAttributeUsages.Add(new ResourceStructureAttributeUsageModel(usage.Id, usage.ResourceStructureAttribute.Id, null));
                        }
                    }

                    SelectedItem = new ResourceStructureAttributeModel();
                }
        }
        public ActionResult ResourceStructureAttributesAll_Select(long id)
        {
            using (ResourceStructureManager rsManager = new ResourceStructureManager())
                using (ResourceStructureAttributeManager rsaManager = new ResourceStructureAttributeManager())
                {
                    IQueryable <ResourceStructureAttribute> rsaList = rsaManager.GetAllResourceStructureAttributes();
                    List <ResourceStructureAttributeModel>  list    = new List <ResourceStructureAttributeModel>();

                    foreach (ResourceStructureAttribute a in rsaList)
                    {
                        ResourceStructureAttributeModel rsaModel = new ResourceStructureAttributeModel(a);
                        rsaModel.rsID = id;
                        list.Add(rsaModel);
                    }
                    return(View("_chooseResourceStructureAttributes", new GridModel <ResourceStructureAttributeModel> {
                        Data = list
                    }));
                }
        }
 //prevents circulation in parents
 private bool CheckParentPossibility(long rsId, long parentId)
 {
     using (ResourceStructureManager rsManager = new ResourceStructureManager())
     {
         ResourceStructure rsParent = rsManager.GetResourceStructureById(parentId);
         if (rsParent.Parent != null)
         {
             if (rsParent.Parent.Id != rsId)
             {
                 CheckParentPossibility(rsId, rsParent.Parent.Id);
             }
             else
             {
                 return(true);
             }
         }
         return(false);
     }
 }
        public ActionResult Delete(long id)
        {
            using (var rsManager = new ResourceStructureManager())
                using (var permissionManager = new EntityPermissionManager())
                    using (var entityTypeManager = new EntityManager())
                    {
                        ResourceStructure resourceStructure = rsManager.GetResourceStructureById(id);
                        bool deleted = rsManager.Delete(resourceStructure);

                        if (deleted)
                        {
                            Type entityType = entityTypeManager.FindByName("ResourceStructure").EntityType;
                            //delete security
                            permissionManager.Delete(entityType, id);
                        }
                    }

            return(RedirectToAction("ResourceStructure", "ResourceStructure"));
        }
        public ResourceStructureManagerModel(RSE.ResourceStructure resourceStructure)
        {
            Id           = resourceStructure.Id;
            Name         = resourceStructure.Name;
            Description  = resourceStructure.Description;
            InUse        = false;
            EditAccess   = false;
            DeleteAccess = false;

            using (ResourceStructureManager rManager = new ResourceStructureManager())
                using (ResourceStructureAttributeManager rsaManager = new ResourceStructureAttributeManager())
                {
                    if (resourceStructure.Parent != null)
                    {
                        RSE.ResourceStructure parent = rManager.GetResourceStructureById(resourceStructure.Parent.Id);
                        Parent = parent.Name;
                    }
                    else
                    {
                        Parent = "";
                    }

                    List <ResourceAttributeUsage>      usages = rsaManager.GetResourceStructureAttributeUsagesByRSId(resourceStructure.Id);
                    List <ResourceAttributeUsageModel> list   = new List <ResourceAttributeUsageModel>();
                    List <string> listNames = new List <string>();
                    if (usages != null)
                    {
                        foreach (ResourceAttributeUsage usage in usages)
                        {
                            list.Add(new ResourceAttributeUsageModel(usage));
                        }
                    }


                    if (list != null)
                    {
                        listNames = list.Select(e => e.ResourceStructureAttribute.Name).ToList();
                    }

                    ResourceStructureAttributesNames = listNames;
                }
        }
        public ActionResult ResourceStructure_Select()
        {
            using (var rsManager = new ResourceStructureManager())
                using (var permissionManager = new EntityPermissionManager())
                    using (var entityTypeManager = new EntityManager())
                    {
                        IQueryable <ResourceStructure> data = rsManager.GetAllResourceStructures();

                        //List<ResourceStructureModel> resourceStructures = new List<ResourceStructureModel>();
                        List <ResourceStructureManagerModel> resourceStructures = new List <ResourceStructureManagerModel>();

                        //get id from loged in user
                        long userId = UserHelper.GetUserId(HttpContext.User.Identity.Name);
                        //get entity type id
                        long entityTypeId = entityTypeManager.FindByName("ResourceStructure").Id;

                        foreach (ResourceStructure rs in data)
                        {
                            ResourceStructureManagerModel temp = new ResourceStructureManagerModel(rs);
                            temp.InUse = rsManager.IsResourceStructureInUse(rs.Id);

                            //get permission from logged in user
                            temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                            {
                                entityTypeId
                            }, rs.Id, RightType.Write);
                            temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                            {
                                entityTypeId
                            }, rs.Id, RightType.Delete);

                            resourceStructures.Add(temp);
                        }


                        return(View("ResourceStructureManager", new GridModel <ResourceStructureManagerModel> {
                            Data = resourceStructures
                        }));
                    }
        }
        public ActionResult ResourceStructureAttribute()
        {
            ViewBag.Title = PresentationModel.GetViewTitleForTenant("Manage Resource Structure Attributes", this.Session.GetTenant());
            List <ResourceStructureAttributeModel> model = new List <ResourceStructureAttributeModel>();

            using (var rsManager = new ResourceStructureManager())
                using (var rsaManager = new ResourceStructureAttributeManager())
                    using (var permissionManager = new EntityPermissionManager())
                        using (var entityTypeManager = new EntityManager())
                        {
                            IQueryable <ResourceStructureAttribute> rsaList = rsaManager.GetAllResourceStructureAttributes();

                            foreach (ResourceStructureAttribute a in rsaList)
                            {
                                ResourceStructureAttributeModel rsaModel = new ResourceStructureAttributeModel(a);
                                if (rsaManager.IsAttributeInUse(a.Id))
                                {
                                    rsaModel.InUse = true;
                                }

                                //get id from loged in user
                                long userId = UserHelper.GetUserId(HttpContext.User.Identity.Name);
                                //get entity type id
                                long entityTypeId = entityTypeManager.FindByName("ResourceStructureAttribute").Id;

                                //get permission from logged in user
                                rsaModel.EditAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                                {
                                    entityTypeId
                                }, a.Id, RightType.Write);
                                rsaModel.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                                {
                                    entityTypeId
                                }, a.Id, RightType.Delete);
                                model.Add(rsaModel);
                            }
                        }

            return(View("ResourceStructureAttributeManager", model));
        }
        public ActionResult ResourceStructureAttributesAllManager_Select()
        {
            using (var rsManager = new ResourceStructureManager())
                using (var rsaManager = new ResourceStructureAttributeManager())
                    using (var permissionManager = new EntityPermissionManager())
                        using (var entityTypeManager = new EntityManager())
                        {
                            IQueryable <ResourceStructureAttribute> rsaList = rsaManager.GetAllResourceStructureAttributes();
                            List <ResourceStructureAttributeModel>  list    = new List <ResourceStructureAttributeModel>();

                            foreach (ResourceStructureAttribute a in rsaList)
                            {
                                ResourceStructureAttributeModel rsaModel = new ResourceStructureAttributeModel(a);
                                if (rsaManager.IsAttributeInUse(a.Id))
                                {
                                    rsaModel.InUse = true;
                                }

                                //get id from loged in user
                                long userId = UserHelper.GetUserId(HttpContext.User.Identity.Name);
                                //get entity type id
                                long entityTypeId = entityTypeManager.FindByName("ResourceStructureAttribute").Id;

                                //get permission from logged in user
                                rsaModel.EditAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                                {
                                    entityTypeId
                                }, a.Id, RightType.Write);
                                rsaModel.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                                {
                                    entityTypeId
                                }, a.Id, RightType.Delete);
                                list.Add(rsaModel);
                            }
                            return(View("ResourceStructureAttributeManager", new GridModel <ResourceStructureAttributeModel> {
                                Data = list
                            }));
                        }
        }
        public ActionResult AddResourceAttributeUsages(string rsId, string rsaIds)
        {
            using (ResourceStructureManager rsManger = new ResourceStructureManager())
                using (ResourceStructureAttributeManager rsaManager = new ResourceStructureAttributeManager())
                {
                    ResourceStructure rs = rsManger.GetResourceStructureById(Convert.ToInt64(rsId));

                    string message = "";
                    if (rs != null)
                    {
                        if (!string.IsNullOrEmpty(rsaIds))
                        {
                            var selectedRsa = rsaIds.Split(',').Select(n => int.Parse(n)).ToList();
                            foreach (int i in selectedRsa)
                            {
                                ResourceStructureAttribute rsa = rsaManager.GetResourceStructureAttributesById(i);
                                if (!IsAttributeInStructure(rs, rsa))
                                {
                                    rsaManager.CreateResourceAttributeUsage(rsa, rs, false, false);
                                }
                                else
                                {
                                    message += "Resource Structure Attribute " + rsa.Name + "is allready in the structure.";
                                }
                            }
                        }

                        ResourceStructureModel model = new ResourceStructureModel(rs);
                        model.Message = message;
                        return(View("_editResourceStructure", model));
                    }
                    else
                    {
                        //rs don't exsits ??
                        return(View("_editResourceStructure"));
                    }
                }
        }
        public ActionResult AddResourceAttributeUsage(long rsId, long rsaId)
        {
            using (ResourceStructureManager rsManger = new ResourceStructureManager())
                using (ResourceStructureAttributeManager rsaManager = new ResourceStructureAttributeManager())
                {
                    ResourceStructure          rs  = rsManger.GetResourceStructureById(rsId);
                    ResourceStructureAttribute rsa = rsaManager.GetResourceStructureAttributesById(rsaId);
                    string message = "";

                    if (!IsAttributeInStructure(rs, rsa))
                    {
                        rsaManager.CreateResourceAttributeUsage(rsa, rs, false, false);
                    }
                    else
                    {
                        message += "Resource Structure Attribute " + rsa.Name + "is allready in the structure.";
                    }

                    ResourceStructureModel model = new ResourceStructureModel(rs);
                    model.Message = message;
                    return(View("_editResourceStructure", model));
                }
        }
        public ActionResult ResourceStructure()
        {
            ViewBag.Title = PresentationModel.GetViewTitleForTenant("Manage Resource Structures", this.Session.GetTenant());
            List <ResourceStructureManagerModel> model = new List <ResourceStructureManagerModel>();

            using (var rsManager = new ResourceStructureManager())
                using (var permissionManager = new EntityPermissionManager())
                    using (var entityTypeManager = new EntityManager())
                    {
                        IQueryable <ResourceStructure> data = rsManager.GetAllResourceStructures();

                        //get id from loged in user
                        long userId = UserHelper.GetUserId(HttpContext.User.Identity.Name);
                        //get entity type id
                        long entityTypeId = entityTypeManager.FindByName("ResourceStructure").Id;

                        foreach (ResourceStructure rs in data)
                        {
                            ResourceStructureManagerModel temp = new ResourceStructureManagerModel(rs);
                            temp.InUse = rsManager.IsResourceStructureInUse(rs.Id);

                            //get permission from logged in user
                            temp.EditAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                            {
                                entityTypeId
                            }, rs.Id, RightType.Write);
                            temp.DeleteAccess = permissionManager.HasEffectiveRight(userId, new List <long>()
                            {
                                entityTypeId
                            }, rs.Id, RightType.Delete);

                            model.Add(temp);
                        }
                    }
            return(View("ResourceStructureManager", model));
        }
        public EditResourceModel(R.SingleResource resource, List <ResourceStructureAttributeValueModel> valuesModel, List <TextValueModel> textValues, List <FileValueModel> fileValues)
        {
            Id                = resource.Id;
            Name              = resource.Name;
            Description       = resource.Description;
            Quantity          = resource.Quantity;
            ResourceStructure = new ResourceStructureModel(resource.ResourceStructure);
            ResourceStructureAttributeValues = valuesModel;
            ResourceStructures = new List <ResourceStructureModel>();
            Color                 = resource.Color;
            WithActivity          = resource.WithActivity;
            ResourceConstraints   = new List <Resource.ResourceConstraintModel>();
            DependencyConstraints = new List <DependencyConstraintModel>();
            BlockingConstraints   = new List <BlockingConstraintModel>();
            QuantityConstraints   = new List <QuantityConstraintModel>();
            //TextValues = new List<TextValueModel>();
            //FileValues = new List<FileValueModel>();

            TextValues = textValues;
            FileValues = fileValues;

            //BookingTimeGranularity
            Duration  = new TimeDuration();
            Duration  = resource.Duration.Self;
            TimeUnits = Enum.GetValues(typeof(SystemDefinedUnit)).Cast <SystemDefinedUnit>().ToList();

            using (ResourceStructureManager manager = new ResourceStructureManager())
            {
                foreach (RS.ResourceStructure rs in manager.GetAllResourceStructures().ToList())
                {
                    ResourceStructures.Add(new ResourceStructureModel(rs));
                }
            }
            //BookingTimeGranularity = resource.BookingTimeGranularity;

            ResourceConstraintModel = new ResourceConstraintModel();

            if (resource.ResourceConstraints != null)
            {
                foreach (ResourceConstraint c in resource.ResourceConstraints)
                {
                    if (c is DependencyConstraint)
                    {
                        DependencyConstraintModel dcModel = new DependencyConstraintModel((DependencyConstraint)c);
                        dcModel.Id    = c.Id;
                        dcModel.Index = c.Index;
                        DependencyConstraints.Add(dcModel);
                        ResourceConstraints.Add(dcModel);
                    }

                    if (c is BlockingConstraint)
                    {
                        BlockingConstraintModel bcModel = new BlockingConstraintModel((BlockingConstraint)c);
                        bcModel.Id    = c.Id;
                        bcModel.Index = c.Index;
                        BlockingConstraints.Add(bcModel);
                        ResourceConstraints.Add(bcModel);
                    }

                    if (c is QuantityConstraint)
                    {
                        QuantityConstraintModel qcModel = new QuantityConstraintModel((QuantityConstraint)c);
                        qcModel.Id    = c.Id;
                        qcModel.Index = c.Index;
                        QuantityConstraints.Add(qcModel);
                        ResourceConstraints.Add(qcModel);
                    }
                }
                //Sort by Index
                ResourceConstraints = ResourceConstraints.OrderBy(x => x.Index).ToList();
            }
        }
Пример #25
0
        public void GenerateSeedData()
        {
            #region ENTITIES

            List <EntityStruct> entities = new List <EntityStruct>();
            entities.Add(new EntityStruct("SingleResource", typeof(SingleResource), typeof(BExIS.Rbm.Services.Resource.SingleResourceStore)));
            entities.Add(new EntityStruct("ResourceStructure", typeof(ResourceStructure), typeof(BExIS.Rbm.Services.ResourceStructure.ResourceStructureStore)));
            entities.Add(new EntityStruct("ResourceStructureAttribute", typeof(ResourceStructureAttribute), typeof(BExIS.Rbm.Services.ResourceStructure.ResourceStructureAttributeStore)));
            entities.Add(new EntityStruct("Activity", typeof(Activity), typeof(BExIS.Rbm.Services.Booking.ActivityStore)));
            entities.Add(new EntityStruct("BookingEvent", typeof(BookingEvent), typeof(BExIS.Rbm.Services.Booking.BookingEventStore)));
            entities.Add(new EntityStruct("Notification", typeof(Notification), typeof(BExIS.Rbm.Services.Booking.NotificationStore)));
            entities.Add(new EntityStruct("Schedule", typeof(Schedule), typeof(BExIS.Rbm.Services.Booking.ScheduleStore)));



            Dictionary <string, Type> rbmEntities = new Dictionary <string, Type>();
            rbmEntities.Add("SingleResource", typeof(SingleResource));
            rbmEntities.Add("ResourceStructure", typeof(ResourceStructure));
            rbmEntities.Add("ResourceStructureAttribute", typeof(ResourceStructureAttribute));
            rbmEntities.Add("Activity", typeof(Activity));
            rbmEntities.Add("BookingEvent", typeof(BookingEvent));
            rbmEntities.Add("Notification", typeof(Notification));
            rbmEntities.Add("Schedule", typeof(Schedule));

            using (var entityManager = new EntityManager())
            {
                foreach (var et in entities)
                {
                    Entity entity = entityManager.Entities.Where(e => e.Name.ToUpperInvariant() == et.Name.ToUpperInvariant()).FirstOrDefault();

                    if (entity == null)
                    {
                        entity                 = new Entity();
                        entity.Name            = et.Name;
                        entity.EntityType      = et.Type;
                        entity.EntityStoreType = et.StoreType;
                        //entity.UseMetadata = true;
                        entity.Securable = true;
                        entityManager.Create(entity);
                    }
                }
            }

            try
            {
                ResourceStructureAttribute rsa = new ResourceStructureAttribute();
                using (var rsaManager = new ResourceStructureAttributeManager())
                    rsa = rsaManager.CreateResourceStructureAttribute("Exploratory", "Biodiversity Exploratories funded by DFG Priority Programme 1374. They serve as open research platform for all biodiversity and ecosystem research groups of Germany.");

                var dcManager = new DataContainerManager();

                string[]          keys        = { "Hainich-Dün", "Schorfheide-Chorin", "Schwäbische Alb" };
                List <DomainItem> domainItems = CreateDomainItems(keys);
                DomainConstraint  dc          = new DomainConstraint(ConstraintProviderSource.Internal, "", "en-US", "a simple domain validation constraint", false, null, null, null, domainItems);
                dcManager.AddConstraint(dc, rsa);


                ResourceStructureAttribute rsa2 = new ResourceStructureAttribute();
                using (var rsaManager2 = new ResourceStructureAttributeManager())
                    rsa2 = rsaManager2.CreateResourceStructureAttribute("Type", "Type of resource.");

                var dcManager2 = new DataContainerManager();

                string[]          keys2        = { "Area", "Equipment", "Sleeping place" };
                List <DomainItem> domainItems2 = CreateDomainItems(keys2);
                DomainConstraint  dc2          = new DomainConstraint(ConstraintProviderSource.Internal, "", "en-US", "a simple domain validation constraint", false, null, null, null, domainItems2);
                dcManager2.AddConstraint(dc2, rsa2);

                ResourceStructureAttribute rsa3 = new ResourceStructureAttribute();
                using (var rsaManager3 = new ResourceStructureAttributeManager())
                    rsa3 = rsaManager3.CreateResourceStructureAttribute("Information File", "Important information as file");

                ResourceStructureManager rsManager = new ResourceStructureManager();;
                ResourceStructure        rs        = rsManager.Create("Explo resources", "Resources related to exploratories.", null, null);

                using (var rsaManager = new ResourceStructureAttributeManager())
                    rsaManager.CreateResourceAttributeUsage(rsa, rs, true, false);
                using (var rsaManager = new ResourceStructureAttributeManager())
                    rsaManager.CreateResourceAttributeUsage(rsa2, rs, true, false);

                using (var rsaManager = new ResourceStructureAttributeManager())
                    rsaManager.CreateResourceAttributeUsage(rsa3, rs, true, true);

                ActivityManager aManager = new ActivityManager();
                aManager.CreateActivity("Adding of material (litter, dead wood, chemicals ....)", "", false);
                aManager.CreateActivity("Adding of organisms (seeds and others)", "", false);
                aManager.CreateActivity("Conference", "", false);
                aManager.CreateActivity("Contact stakeholder", "", false);
                aManager.CreateActivity("Dismantling of experiments", "", false);
                aManager.CreateActivity("Installation of equipment remaining for some time", "", false);
                aManager.CreateActivity("Measuring and marking of subplots/experiments/study organisms", "", false);
                aManager.CreateActivity("Observation/capture of organisms without removal", "", false);
                aManager.CreateActivity("Plot maintenance", "", false);
                aManager.CreateActivity("Removal of org. material without killing", "", false);
                aManager.CreateActivity("Removal of organisms", "", false);
                aManager.CreateActivity("Removal of soil samples", "", false);
                aManager.CreateActivity("Visit without activity", "", false);

                ResourceManager             rManager = new ResourceManager();;
                List <newResourceStructure> rs_new   = new List <newResourceStructure>();

                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all EPs (SCH)", color = "#ec5959", description = "Visit of all forest EPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all MIPs (SCH)", color = "#ec5959", description = "Visit of all forest MIPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all VIPs (SCH)", color = "#ec5959", description = "Visit of all forest VIPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Altenhof", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Arnimswalde", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Chorin", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Eichheide", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Glambeck", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Liepe", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Maienpfuhl", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Melzow", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Poratz", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Ringenwalde", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Senftenthal", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Theerofen", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Voigtswiese", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - Forstgut Altkuenkendorf", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - Fuerstliche Forstverwaltung Oettingen-Spielberg", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - Stiftung Schorfheide-Chorin", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - FOX (SCH)", color = "#ec5959", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - RP/UP (SCH)", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - ABP Landwirtschaft Neugrimnitz GmbH", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AEVG Stegelitz-Flieth", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Agrargemeinschaft Greiffenberg GmbH", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all EPs (SCH)", color = "#ff0000", description = "Visit of all grassland EPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all MIPs (SCH)", color = "#ff0000", description = "Visit of all grassland MIPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all VIPs (SCH)", color = "#ff0000", description = "Visit of all grassland VIPs in Schorfheide-Chorin", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Gut Biesenbrow", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Ingolf Limber", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Lehrschaeferei Friedrichsfelde", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - LW-Betrieb Haferkamp", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Naturrind GmbH Boeckenberg", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Reiner Wegner", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Weidewirtschaft Liepe", color = "#ff0000", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "no plot visit (SCH)", color = "#e28f8f", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schorfheide-Chorin"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "Sleeping place (SCH)", color = "#9c3939", description = "Sleeping places in Schorfheide-Chorin", duration = 1, quantity = 8, withActivity = false, resourceStructure = rs, type = "Sleeping place", explo = "Schorfheide-Chorin"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Drying cabinet (SCH)", color = "#940b0b", description = "Drying cabinet in Schorfheide-Chorin", duration = 1, quantity = 5, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Fridge (SCH)", color = "#940b0b", description = "Fridge in Schorfheide-Chorin", duration = 1, quantity = 2, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Freezer (SCH)", color = "#940b0b", description = "Freezer in Schorfheide-Chorin", duration = 1, quantity = 2, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Metal detector (Magna Trak 100) (SCH)", color = "#940b0b", description = "Metal detector (Magna Trak 100) in Schorfheide-Chorin", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Binocular (SCH)", color = "#940b0b", description = "", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Chest freezer (SCH)", color = "#940b0b", description = "", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Helmet (SCH)", color = "#940b0b", description = "", duration = 1, quantity = 8, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schorfheide-Chorin"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all EPs (HAI)", color = "#8cca0d", description = "Visit of all forest EPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all GPs (HAI)", color = "#8cca0d", description = "Visit of all forestGPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all MIPs (HAI)", color = "#8cca0d", description = "Visit of all forest MIPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all VIPs (HAI)", color = "#8cca0d", description = "Visit of all forest VIPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - FOX (HAI)", color = "8cca0d", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Anrode", color = "#8cca0d", description = "Forest - district Anrode", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - city of Mühlhausen", color = "#8cca0d", description = "Forest - city of Mühlhausen", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Behringen", color = "#8cca0d", description = "Forest - district Behringen", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Geney", color = "#8cca0d", description = "Forest - district Geney", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Keula", color = "#8cca0d", description = "Forest - district Keula", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Langula", color = "#8cca0d", description = "Forest - district Langula", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Sollstedt", color = "#8cca0d", description = "Forest - district Sollstedt", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Zehnsberg", color = "#8cca0d", description = "Forest - district Zehnsberg", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - national park", color = "#8cca0d", description = "Forest - national park", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - national park Weberstedterholz (core zone)", color = "#8cca0d", description = "Forest - national park Weberstedterholz (core zone)", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - district Westerwald", color = "#8cca0d", description = "Forest - district Westerwald", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all GPs (HAI)", color = "#9acd32", description = "Visit of all grassland GPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all EPs (HAI)", color = "#9acd32", description = "Visit of all grassland EPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all MIPs (HAI)", color = "#9acd32", description = "Visit of all grassland MIPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all VIPs (HAI)", color = "#9acd32", description = "Visit of all grassland VIPs in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - RP/UP (HAI)", color = "9acd32", description = "Visit of all new landuse experiment plots in HAI (HEG1,2,3,6,14,15)", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Diedorf", color = "#9acd32", description = "Grassland - AG Diedorf", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Großenlupnitz", color = "#9acd32", description = "Grassland - AG Großenlupnitz", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Kirchheiligen", color = "#9acd32", description = "Grassland - AG Kirchheiligen", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Bollstedt", color = "#9acd32", description = "Grassland - AG Bollstedt", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Lengefeld", color = "#9acd32", description = "Grassland - AG Lengefeld", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Mülverstedt", color = "#9acd32", description = "Grassland - AG Mülverstedt", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Wartburgblick", color = "#9acd32", description = "Grassland - AG Wartburgblick", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG Wenigenlupnitz", color = "#9acd32", description = "Grassland - AG Wenigenlupnitz", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - AG-Struth-Eigenrieden", color = "#9acd32", description = "Grassland - AG-Struth-Eigenrieden", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - BEAG/TOA", color = "#9acd32", description = "Grassland - BEAG/TOA", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Bundesforst Dörnaerplatz", color = "#9acd32", description = "Grassland - Bundesforst Dörnaerplatz", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Gut Sambach", color = "#9acd32", description = "Grassland - Gut Sambach", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Thüringen Wagyu Becker&Becker", color = "#9acd32", description = "Grassland - Thüringen Wagyu Becker&Becker", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Heller", color = "#9acd32", description = "Grassland - Heller", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Schaeferei Effenberger", color = "#9acd32", description = "Grassland - Schaeferei Effenberger", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Nationalpark", color = "#9acd32", description = "Grassland - Nationalpark", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Nordagrar (Naturrind Unstruttal)", color = "#9acd32", description = "Grassland - Nordagrar (Naturrind Unstruttal)", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Schaeferei Goepfert", color = "#9acd32", description = "Grassland - Schaeferei Goepfert", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Börner", color = "#9acd32", description = "Grassland - Börner", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - Strewe-Winterberg", color = "#9acd32", description = "Grassland - Strewe-Winterberg", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - TUPAG (Hainich Weiderind)", color = "#9acd32", description = "Grassland - TUPAG (Hainich Weiderind)", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "no plot visit", color = "#a9fb00", description = "No plot visit in Hainich-Dün", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Hainich-Dün"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "Sleeping place (HAI)", color = "#78ab0f", description = "Sleeping place in Hainich-Dün", duration = 1, quantity = 8, withActivity = false, resourceStructure = rs, type = "Sleeping place", explo = "Hainich-Dün"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Drying cabinet (HAI)", color = "#6a8a27", description = "Drying cabinete in Hainich-Dün", duration = 1, quantity = 4, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Fridge (HAI)", color = "#6a8a27", description = "Fridge in Hainich-Dün", duration = 1, quantity = 2, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Freezer (HAI)", color = "#6a8a27", description = "Freezer in Hainich-Dün", duration = 1, quantity = 3, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Metal detector (Magna Trak 100) (HAI)", color = "#6a8a27", description = "Metal detector (Magna Trak 100) in Hainich-Dün", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Hainich-Dün"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Metal detector (Garrett ACE  150) (HAI)", color = "#6a8a27", description = "Metal detector (Garrett ACE  150) in Hainich-Dün", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Hainich-Dün"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - all EPs (ALB)", color = "#3a75e0", description = "Visit of all forest EPs in Schwäbische Alb", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - VIP AEW1-8 (ALB)", color = "#3a75e0", description = "Visit of all VIP AEW1-8 in Schwäbische Alb", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - VIP AEW9 (Alb)", color = "#3a75e0", description = "Visit of all VIP AEW9 in Schwäbische Alb", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Forest - FOX (ALB)", color = "#3a75e0", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all EPs excluding former military training area", color = "#6495ed", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all EPs including former military training area", color = "#6495ed", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - all VIPs (ALB)", color = "#6495ed", description = "Visit of all grassland VIPs in Schwäbische Alb", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Grassland - RP/UP (ALB)", color = "#6495ed", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });


                rs_new.Add(new newResourceStructure()
                {
                    name = "no plot visit (ALB)", color = "#0057f5", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "total Exploratory outside EP", color = "#0057f6", description = "", duration = 1, quantity = 0, withActivity = true, resourceStructure = rs, type = "Area", explo = "Schwäbische Alb"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Sleeping place (ALB)", color = "#27509a", description = "Sleeping places in Schwäbische Alb", duration = 1, quantity = 8, withActivity = false, resourceStructure = rs, type = "Sleeping place", explo = "Schwäbische Alb"
                });

                rs_new.Add(new newResourceStructure()
                {
                    name = "Drying cabinet (ALB)", color = "#7e95bf", description = "Drying cabinet in Schwäbische Alb", duration = 1, quantity = 5, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Binocular (ALB)", color = "#7e95bf", description = "", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schwäbische Alb"
                });
                rs_new.Add(new newResourceStructure()
                {
                    name = "Metal detector (Magna Trak 100) (ALB)", color = "#7e95bf", description = "Metal detector (Magna Trak 100) in Schwäbische Alb", duration = 1, quantity = 1, withActivity = false, resourceStructure = rs, type = "Equipment", explo = "Schwäbische Alb"
                });

                //get/create admin group for entity rights
                using (var groupManager = new GroupManager())
                    using (var permissionManager = new EntityPermissionManager())
                        using (var entityManager = new EntityManager())
                            using (var valueManager = new ResourceStructureAttributeManager())
                            {
                                var adminGroup = groupManager.Groups.Where(r => r.Name == "administrator").FirstOrDefault();
                                if (adminGroup == null)
                                {
                                    // create new group
                                    adminGroup = new Group
                                    {
                                        Name          = "administrator",
                                        Description   = "administrator",
                                        DisplayName   = "administrator",
                                        IsSystemGroup = false,
                                        IsValid       = true
                                    };

                                    groupManager.CreateAsync(adminGroup).Wait();
                                }

                                //create right type
                                int rights = (int)RightType.Read + (int)RightType.Write + (int)RightType.Delete + (int)RightType.Grant;

                                foreach (newResourceStructure rs_item in rs_new)
                                {
                                    var duration = new TimeDuration();
                                    duration.Value = rs_item.duration;
                                    var resource = rManager.CreateResource(rs_item.name, rs_item.description, rs_item.quantity, rs_item.color, rs_item.withActivity, rs_item.resourceStructure, duration);

                                    //add entity rights
                                    permissionManager.Create(adminGroup,
                                                             entityManager.FindByName("SingleResource"),
                                                             resource.Id,
                                                             rights
                                                             );

                                    ResourceAttributeUsage usage = valueManager.GetResourceAttributeUsageById(1);
                                    valueManager.CreateResourceAttributeValue(rs_item.explo, rManager.GetResourceById(resource.Id), usage);
                                    ResourceAttributeUsage usage2 = valueManager.GetResourceAttributeUsageById(2);
                                    valueManager.CreateResourceAttributeValue(rs_item.type, rManager.GetResourceById(resource.Id), usage2);
                                }
                            }
            }
            catch (Exception e)
            {
                Console.WriteLine("{0} Exception caught.", e);
            }
            #endregion

            #region SECURITY

            OperationManager operationManager = new OperationManager();
            FeatureManager   featureManager   = new FeatureManager();

            try
            {
                List <Feature> features = featureManager.FeatureRepository.Get().ToList();

                Feature ResourceBooking = features.FirstOrDefault(f => f.Name.Equals("Resource Booking"));
                if (ResourceBooking == null)
                {
                    ResourceBooking = featureManager.Create("Resource Booking", "Resource Booking");
                }

                Feature NotificationBlackboard = features.FirstOrDefault(f => f.Name.Equals("Notification Blackboard"));
                if (NotificationBlackboard == null)
                {
                    NotificationBlackboard = featureManager.Create("Notification Blackboard", "Notification Blackboard", ResourceBooking);
                }


                Feature ResourceAdmin = features.FirstOrDefault(f => f.Name.Equals("Resource Administration"));
                if (ResourceAdmin == null)
                {
                    ResourceAdmin = featureManager.Create("Resource Administration", "Resource Administration");
                }

                Feature ResourceManagement = features.FirstOrDefault(f => f.Name.Equals("Resource Management"));
                if (ResourceManagement == null)
                {
                    ResourceManagement = featureManager.Create("Resource Management", "Resource Management", ResourceAdmin);
                }

                Feature ResourceStructureManagement = features.FirstOrDefault(f => f.Name.Equals("Resource Structure Management"));
                if (ResourceStructureManagement == null)
                {
                    ResourceStructureManagement = featureManager.Create("Resource Structure Management", "Resource Structure Management", ResourceAdmin);
                }

                Feature ResourceStructureAttributeManagement = features.FirstOrDefault(f => f.Name.Equals("Resource Structure Attribute Management"));
                if (ResourceStructureAttributeManagement == null)
                {
                    ResourceStructureAttributeManagement = featureManager.Create("Resource Structure Attribute Management", "Resource Structure Attribute Management", ResourceAdmin);
                }

                Feature NotificationManagement = features.FirstOrDefault(f => f.Name.Equals("Notification Management"));
                if (NotificationManagement == null)
                {
                    NotificationManagement = featureManager.Create("Notification Management", "Notification Management", ResourceAdmin);
                }

                Feature ActivityManagement = features.FirstOrDefault(f => f.Name.Equals("Activity Management"));
                if (ActivityManagement == null)
                {
                    ActivityManagement = featureManager.Create("Activity Management", "Activity Management", ResourceAdmin);
                }


                operationManager.Create("RBM", "Schedule", "*", ResourceBooking);
                operationManager.Create("RBM", "Calendar", "*", ResourceBooking);
                operationManager.Create("RBM", " NotificationBlackboard", "*", NotificationBlackboard);



                operationManager.Create("RBM", "Resource", "*", ResourceManagement);
                operationManager.Create("RBM", "ResourceStructure", "*", ResourceStructureManagement);
                operationManager.Create("RBM", "ResourceStructure", "*", ResourceStructureAttributeManagement);
                operationManager.Create("RBM", "Notification", "*", NotificationManagement);
                operationManager.Create("RBM", "Activity", "*", ActivityManagement);

                #region Help Workflow

                if (!operationManager.Exists("RBM", "help", "*"))
                {
                    operationManager.Create("RBM", "Help", "*");
                }

                #endregion Help Workflow
            }
            catch (Exception ex)
            {
                throw ex;
            }

            finally
            {
                operationManager.Dispose();
                featureManager.Dispose();
            }

            #endregion
        }
        public ActionResult SaveResourceStructureAttribute(EditResourceStructureAttributeModel model, string[] keys)
        {
            using (var rsaManager = new ResourceStructureAttributeManager())
            {
                //check name
                if (model.AttributeName != null)
                {
                    ResourceStructureAttribute tempRS = rsaManager.GetResourceStructureAttributesByName(StringHelper.CutSpaces(model.AttributeName));
                    if (tempRS != null && tempRS.Id != model.Id)
                    {
                        ModelState.AddModelError("NameExist", "Name already exist.");
                    }
                }

                //check domain items
                if (keys != null)
                {
                    List <DomainItemModel> tempList = new List <DomainItemModel>();
                    foreach (string k in keys)
                    {
                        DomainItemModel d = new DomainItemModel();
                        d.Key   = k;
                        d.Value = k;
                        tempList.Add(d);
                        if (string.IsNullOrEmpty(k))
                        {
                            ModelState.AddModelError("DomainItem", "One domain item has no value.");
                        }
                    }
                    model.DomainItems = tempList;
                }

                if (ModelState.IsValid)
                {
                    ResourceStructureAttribute rsa = new ResourceStructureAttribute();
                    using (var rsManager = new ResourceStructureManager())
                    {
                        if (model.Id == 0)
                        {
                            rsa = rsaManager.CreateResourceStructureAttribute(model.AttributeName, model.AttributeDescription);
                        }
                        else
                        {
                            rsa             = rsaManager.GetResourceStructureAttributesById(model.Id);
                            rsa.Name        = model.AttributeName;
                            rsa.Description = model.AttributeDescription;
                            rsaManager.UpdateResourceStructureAttribute(rsa);
                        }

                        if (rsa != null && model.Id == 0)
                        {
                            //Start -> add security ----------------------------------------

                            using (EntityPermissionManager pManager = new EntityPermissionManager())
                                using (var entityTypeManager = new EntityManager())
                                    using (UserManager userManager = new UserManager())
                                    {
                                        var userTask = userManager.FindByNameAsync(HttpContext.User.Identity.Name);
                                        userTask.Wait();
                                        var user = userTask.Result;

                                        Entity entityType = entityTypeManager.FindByName("ResourceStructureAttribute");

                                        pManager.Create(user, entityType, rsa.Id, 31);
                                    }

                            //End -> add security ------------------------------------------
                        }


                        if (keys != null)
                        {
                            List <DomainItem> domainItems = CreateDomainItems(keys);
                            using (var dcManager = new DataContainerManager())
                            {
                                if (model.Id == 0 || rsa.Constraints.Count() == 0)
                                {
                                    DomainConstraint dc = new DomainConstraint(ConstraintProviderSource.Internal, "", "en-US", "a simple domain validation constraint", false, null, null, null, domainItems);
                                    dcManager.AddConstraint(dc, rsa);
                                }
                                else
                                {
                                    DomainConstraint temp = (DomainConstraint)rsa.Constraints.ElementAt(0);
                                    temp.Materialize();
                                    temp.Items = domainItems;
                                    dcManager.AddConstraint(temp, rsa);
                                }
                            }
                        }

                        //Creation with usage
                        if (model.rsID != 0)
                        {
                            ResourceStructure resourceStructure = rsManager.GetResourceStructureById(model.rsID);
                            rsaManager.CreateResourceAttributeUsage(rsa, resourceStructure, true, false);
                            //resourceStructure.ResourceStructureAttributes.Add(rsa);
                            //rsManager.Update(resourceStructure);
                            //return View("_editResourceStructure", new ResourceStructureModel(resourceStructure));
                            return(Json(new { success = true }));
                        }
                        else
                        {
                            return(Json(new { success = true }));
                        }
                    }
                }
                else
                {
                    return(PartialView("_createResourceStructureAttribute", model));
                }
            }
        }