public Result <ItSystemUsage.ItSystemUsage, OperationError> RemoveSystem(ItSystemUsage.ItSystemUsage systemUsage)
        {
            if (systemUsage == null)
            {
                throw new ArgumentNullException(nameof(systemUsage));
            }

            if (GetAssignedSystemUsage(systemUsage.Id).IsNone)
            {
                return(new OperationError("Usage not assigned", OperationFailure.BadInput));
            }

            SystemUsages.Remove(systemUsage);

            return(systemUsage);
        }
        public Result <ItSystemUsage.ItSystemUsage, OperationError> AssignSystem(ItSystemUsage.ItSystemUsage systemUsage)
        {
            if (systemUsage == null)
            {
                throw new ArgumentNullException(nameof(systemUsage));
            }

            if (GetAssignedSystemUsage(systemUsage.Id).HasValue)
            {
                return(new OperationError("System usage is already assigned", OperationFailure.Conflict));
            }

            SystemUsages.Add(systemUsage);

            return(systemUsage);
        }
 private Maybe <ItSystemUsage.ItSystemUsage> GetAssignedSystemUsage(int usageId)
 {
     return(SystemUsages.FirstOrDefault(x => x.Id == usageId).FromNullable());
 }