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); } }
void SetPowerBars(List <PowerBar> allPowerBars, Group editedGroup, decimal[] newPowerBarSNs) { Try.Argument(newPowerBarSNs, nameof(newPowerBarSNs)); var powerBarSNs = allPowerBars.Where(x => x.Groups .Any(y => y.GroupID == editedGroup.GroupID)) .Select(x => x.PowerBarSN) .ToList(); var newPowerBarSNsSet = new HashSet <decimal>(newPowerBarSNs); var toDeletePowerBarSNsSet = new HashSet <decimal>(powerBarSNs); toDeletePowerBarSNsSet.ExceptWith(newPowerBarSNsSet); if (toDeletePowerBarSNsSet.Any()) { foreach (var powerBar in allPowerBars.Where(x => toDeletePowerBarSNsSet.Contains(x.PowerBarSN))) { powerBar.Groups.RemoveAll(x => x.GroupID == editedGroup.GroupID); } } newPowerBarSNsSet.ExceptWith(powerBarSNs); if (newPowerBarSNsSet.Any()) { foreach (var powerBar in allPowerBars.Where(x => newPowerBarSNsSet.Contains(x.PowerBarSN))) { powerBar.Groups.Add(editedGroup); } } }
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); } }
public AccountAccess SetAccountAccess(AccountAccessClientData accessData) { Try.Argument(accessData, nameof(accessData)); var slaveAccount = UserContext.Accounts.GetOrFail(accessData.SlaveLogin); var masterAccount = UserContext.Accounts.GetOrFail(accessData.MasterLogin); if (accessData.Role != AccountAccessRoles.None) { CheckForAccessOverSlave(slaveAccount, AccountAccessRoles.Admin); } return(SetAccountAccess_Checked(slaveAccount, masterAccount, accessData.Role)); }
void SetGroups(List <Group> allGroups, Group editedGroup, int[] newGroupIDs) { Try.Argument(newGroupIDs, nameof(newGroupIDs)); var newGroupIDsSet = new HashSet <int>(newGroupIDs); foreach (var group in allGroups) { if (newGroupIDsSet.Contains(group.GroupID)) { if (group.ParentGroupID != editedGroup.GroupID) { group.ParentGroupID = editedGroup.GroupID; } } else if (group.ParentGroupID == editedGroup.GroupID) { group.ParentGroupID = null; } } }
public static void SetMany <ChildType, ChildIDType>( IEnumerable <ChildType> all, List <ChildType> childs, IEnumerable <ChildIDType> newChildsIDs, Func <ChildType, ChildIDType> childIDSelector) { Try.Argument(newChildsIDs, nameof(newChildsIDs)); var newChildsIDsSet = new HashSet <ChildIDType>(newChildsIDs); var childsIDsSet = new HashSet <ChildIDType>(childs.Select(x => childIDSelector(x))); childsIDsSet.IntersectWith(newChildsIDsSet); if (childs.Count != childsIDsSet.Count) { childs.RemoveAll(x => !childsIDsSet.Contains(childIDSelector(x))); } newChildsIDsSet.ExceptWith(childsIDsSet); if (newChildsIDsSet.Any()) { childs.AddRange(all.Where(x => newChildsIDsSet.Contains(childIDSelector(x)))); } }
public static IdentityResult NewPassword(this UserManager manager, string login, string newPassword) { Try.Argument(manager, nameof(manager)); return(AsyncHelper.RunSync(() => manager.NewPasswordAsync(login, newPassword))); }