Beispiel #1
0
        public GroupItem Edit(long installationID, int groupID, GroupClientData clientData)
        {
            Try.Argument(clientData, nameof(clientData));

            using (var transaction = Context.Data.Database.BeginTransaction())
            {
                var groups    = Context.Data.GetGroups(installationID);
                var powerBars = Context.Data.GetPowerBars(installationID, true);

                var editedGroup = groups.FirstOrDefault(x => x.GroupID == groupID);
                Try.NotNull(editedGroup, $"Cant find group with ID: {groupID};");

                SetGroupProperties(groups, powerBars, editedGroup, clientData);

                var editedHierarchy = new TopGroup(groups);
                editedHierarchy.CheckCycles();
                editedHierarchy.AddPowerBars(powerBars);

                var editedGroupItem = editedHierarchy.GetGroupById(editedGroup.GroupID);
                Try.NotNull(editedGroupItem, $"Cant find group with ID: {editedGroup.GroupID} in hierarchy;", false);

                editedHierarchy.UpdateStatuses();

                Context.Data.SaveChanges();
                transaction.Commit();

                Context.Events.GroupChange(installationID, editedGroupItem.GroupID, EventActionType.Edit);

                return(editedGroupItem);
            }
        }
Beispiel #2
0
        public GroupItem Create(long installationID, GroupClientData clientData)
        {
            Try.Argument(clientData, nameof(clientData));

            using (var transaction = Context.Data.Database.BeginTransaction())
            {
                var groups    = Context.Data.GetGroups(installationID);
                var powerBars = Context.Data.GetPowerBars(installationID, true);

                var installatioin = Context.Data.Installations.Find(installationID);
                var newGroup      = new Group(installatioin);

                SetGroupProperties(groups, powerBars, newGroup, clientData);

                Context.Data.Groups.Add(newGroup);
                groups.Add(newGroup);
                var newGroupId = newGroup.GroupID;

                var hierarchy = new TopGroup(groups);
                hierarchy.CheckCycles();
                hierarchy.AddPowerBars(powerBars);

                var newGroupItem = hierarchy.GetGroupById(newGroupId);
                Try.NotNull(newGroupItem, "Cant find new group in hierarchy;", false);

                hierarchy.UpdateStatuses();

                Context.Data.SaveChanges();
                transaction.Commit();

                Context.Events.GroupChange(installationID, newGroupItem.GroupID, EventActionType.Create);

                return(newGroupItem);
            }
        }
Beispiel #3
0
        void SetGroupProperties(List <Group> allGroups, List <PowerBar> allPowerBars,
                                Group editedGroup, GroupClientData clientData)
        {
            if (clientData.Name != null)
            {
                editedGroup.Name = clientData.Name;
            }
            if (clientData.ShortName != null)
            {
                editedGroup.ShortName = clientData.ShortName;
            }

            if (editedGroup.IsMainGroupInInstallation)
            {
                Try.Condition(!clientData.ParentGroupID.HasValue, $"Cant set {nameof(clientData.ParentGroupID)} for main group;");
                Try.Condition(clientData.GroupIDs == null, $"Cant set {nameof(clientData.GroupIDs)} for main group;");
                Try.Condition(clientData.PowerBarSNs == null, $"Cant set {nameof(clientData.PowerBarSNs)} for main group;");
            }
            else
            {
                if (clientData.ParentGroupID.HasValue)
                {
                    var mainGroup = allGroups.FirstOrDefault(x => x.IsMainGroupInInstallation);
                    Try.NotNull(mainGroup, "Main group not found;", false);

                    editedGroup.ParentGroupID = (clientData.ParentGroupID.Value == 0 || clientData.ParentGroupID.Value == mainGroup.GroupID)
                        ? null : clientData.ParentGroupID;
                }

                if (clientData.GroupIDs != null)
                {
                    SetGroups(allGroups, editedGroup, clientData.GroupIDs);
                }

                if (clientData.PowerBarSNs != null)
                {
                    SetPowerBars(allPowerBars, editedGroup, clientData.PowerBarSNs);
                }
            }
        }