Пример #1
0
        static void Main(string[] args)
        {
            var idProvider    = new IdProvider();
            var consoleLogger = new ConsooleLogger();
            var manager       = new TaskManager(idProvider, consoleLogger);
            var task          = new Task("Some task");

            manager.Add(task);
        }
Пример #2
0
        public void Save(UserAccount item)
        {
            if (item == null)
            {
                throw new ArgumentException("Null item");
            }
            DateTime now = DateTime.Now;
            string   id  = null;

#if DEBUG
            if (item.NaasAccount.StartsWith("uid="))
            {
                DebugUtils.CheckDebuggerBreak();
            }
#endif // DEBUG
            // Check to see if this user already exists
            if (string.IsNullOrEmpty(item.Id))
            {
                string existingUserId = GetUserIdByName(item.NaasAccount);
                if (existingUserId != null)
                {
                    item.Id = existingUserId;
                }
            }

            TransactionTemplate.Execute(delegate
            {
                // Update user account table
                if (string.IsNullOrEmpty(item.Id))
                {
                    id = IdProvider.Get();
                    DoInsert(TABLE_NAME, "Id;NAASAccount;IsActive;SystemRole;ModifiedBy;ModifiedOn;IsDeleted",
                             id, item.NaasAccount, DbUtils.ToDbBool(item.IsActive),
                             item.Role.ToString(), item.ModifiedById, now, DbUtils.ToDbBool(false));
                }
                else
                {
                    id = item.Id;
                    DoSimpleUpdateOne(TABLE_NAME, "Id", item.Id.ToString(),
                                      "NAASAccount;IsActive;SystemRole;ModifiedBy;ModifiedOn",
                                      item.NaasAccount, DbUtils.ToDbBool(item.IsActive),
                                      item.Role.ToString(), item.ModifiedById, now);
                }
                // Update policies
                DeleteAllPoliciesForUser(id);
                if (item.Role != SystemRoleType.Admin)
                {
                    SavePoliciesForUser(id, item.Policies);
                }
                return(null);
            });
            if (string.IsNullOrEmpty(item.Id))
            {
                item.Id = id;
            }
            item.ModifiedOn = now;
        }
Пример #3
0
        private void SavePoliciesForUser(string accountId, IList <UserAccessPolicy> policies)
        {
            if (CollectionUtils.IsNullOrEmpty(policies))
            {
                return;
            }
            DateTime now = DateTime.Now;

            object[] insertValues = new object[7];
            DoBulkInsert(POLICY_TABLE_NAME, "Id;AccountId;Type;Qualifier;IsAllowed;ModifiedBy;ModifiedOn",
                         delegate(int currentInsertIndex)
            {
                if (currentInsertIndex < policies.Count)
                {
                    UserAccessPolicy policy = policies[currentInsertIndex];
                    if (string.IsNullOrEmpty(policy.Id))
                    {
                        policy.Id         = IdProvider.Get();
                        policy.ModifiedOn = now;
                    }
                    else if (policy.ModifiedOn == default(DateTime))
                    {
                        policy.ModifiedOn = now;
                    }
                    policy.AccountId = accountId;
                    insertValues[0]  = policy.Id;
                    insertValues[1]  = policy.AccountId;
                    insertValues[2]  = policy.PolicyType.ToString();
                    insertValues[3]  = policy.TypeQualifier;
                    switch (policy.FlowRoleType)
                    {
                    case FlowRoleType.Endpoint:
                        insertValues[4] = "Y";
                        break;

                    case FlowRoleType.View:
                        insertValues[4] = "V";
                        break;

                    case FlowRoleType.Modify:
                        insertValues[4] = "M";
                        break;

                    default:
                        insertValues[4] = "N";
                        break;
                    }
                    insertValues[5] = policy.ModifiedById;
                    insertValues[6] = policy.ModifiedOn;
                    return(insertValues);
                }
                else
                {
                    return(null);
                }
            });
        }
        /// <summary>
        /// Create a node notification.
        /// </summary>
        public string CreateNotification(string transactionId, ComplexNotification notification)
        {
            string id         = IdProvider.Get();
            string notifyData = _serializationHelper.SerializeToBase64String(notification);

            DoInsert(TABLE_NAME,
                     "Id;TransactionId;NotifyData",
                     id, transactionId, notifyData);
            return(id);
        }
Пример #5
0
            public void CreatesTagWithIdFromIdProvider(long nextId)
            {
                IdProvider.GetNextIdentifier().Returns(nextId);

                DataSource.Create("Some tag", 10).Wait();

                DataBase.Tags.Received().Create(
                    Arg.Is <IDatabaseTag>(tag => tag.Id == nextId)
                    ).Wait();
            }
Пример #6
0
        /// <summary>
        /// Adds a new note to storage. will return an id for the note.
        /// </summary>
        /// <returns></returns>
        public CreateResponse Create(Note note)
        {
            note.Id      = IdProvider.New();
            note.Created = DateTime.UtcNow;
            note.Expiry  = note.Expiry > DateTime.MinValue ? note.Expiry : DateTime.UtcNow.AddHours(1);

            return(new CreateResponse {
                Id = note.Id,
                Success = Storage.Add(note),
                Expiry = note.Expiry
            });
        }
Пример #7
0
        public void ThrowArgumentException_WhenMaximumIDReached()
        {   // Arrange
            uint startId           = 1;
            uint endId             = 2;
            var  provider          = new IdProvider(startId, endId);
            uint firstAvailabeId   = provider.GenerateID();
            uint secondAvailableId = provider.GenerateID();

            // No available IDs should left
            // Act and Assert
            Assert.ThrowsException <InvalidOperationException>(() => provider.GenerateID());
        }
Пример #8
0
        public void IncrementIDsByOne_WhenInvoked()
        {   // Arrange
            uint expected = 1U;
            uint startId  = 2;
            uint endId    = 10;
            var  provider = new IdProvider(startId, endId);
            // Act
            uint firstId = provider.GenerateID();
            uint nextId  = provider.GenerateID();

            // Assert
            Assert.AreEqual(expected, nextId - firstId);
        }
Пример #9
0
        private void SaveAndRun(ScheduledItem item, bool?runNow)
        {
            if (item == null)
            {
                throw new ArgumentException("Null item");
            }
            DateTime now         = DateTime.Now;
            string   id          = null;
            bool     isRunNow    = runNow.HasValue ? runNow.Value : false;
            string   columnNames = "Name;FlowId;StartOn;EndOn;SourceType;SourceId;SourceFlow;SourceOperation;TargetType;" +
                                   "TargetId;TargetFlow;TargetOperation;LastExecuteActivityId;LastExecutedOn;NextRun;" +
                                   "FrequencyType;Frequency;ModifiedBy;ModifiedOn;IsActive;IsRunNow;ExecuteStatus";
            List <object> columnValues =
                CollectionUtils.CreateList <object>(item.Name, item.FlowId, DbUtils.ToDbDate(item.StartOn),
                                                    DbUtils.ToDbDate(item.EndOn),
                                                    item.SourceType.ToString(), item.SourceId, item.SourceFlow ?? string.Empty,
                                                    item.SourceRequest ?? string.Empty, item.TargetType.ToString(), item.TargetId,
                                                    item.TargetFlow ?? string.Empty, item.TargetRequest ?? string.Empty, item.LastExecuteActivityId,
                                                    DbUtils.ToDbDate(item.LastExecutedOn),
                                                    DbUtils.ToDbDate(item.NextRunOn), item.FrequencyType.ToString(),
                                                    item.Frequency, item.ModifiedById, now, DbUtils.ToDbBool(item.IsActive),
                                                    DbUtils.ToDbBool(isRunNow), item.ExecuteStatus.ToString());

            if (AreEndpointUsersEnabled)
            {
                columnNames += ";SourceEndpointUser;TargetEndpointUser";
                columnValues.AddRange(new object[] { item.SourceEndpointUser, item.TargetEndpointUser });
            }
            TransactionTemplate.Execute(delegate
            {
                if (string.IsNullOrEmpty(item.Id))
                {
                    id          = IdProvider.Get();
                    columnNames = "Id;" + columnNames;
                    columnValues.Insert(0, id);
                    DoInsertWithValues(TABLE_NAME, columnNames, columnValues);
                }
                else
                {
                    DoSimpleUpdateOneWithValues(TABLE_NAME, "Id", item.Id, columnNames, columnValues);
                }
                SaveScheduleSourceArgs(id ?? item.Id, item.SourceArgs);
                return(null);
            });
            if (id != null)
            {
                item.Id = id;
            }
            item.ModifiedOn = now;
        }
        public void Save(AccountAuthorizationRequest item)
        {
            if (item == null)
            {
                throw new ArgumentException("Null item");
            }
            string id = null;

            TransactionTemplate.Execute(delegate
            {
                string authorizationAccountId     = null, authorizationComments = null;
                DateTime authorizationGeneratedOn = DbUtils.DB_MIN_DATE;
                string didCreateInNaas            = null;
                if (item.Response != null)
                {
                    authorizationAccountId   = item.Response.AuthorizationAccountId;
                    authorizationComments    = item.Response.AuthorizationComments;
                    authorizationGeneratedOn = item.Response.AuthorizationGeneratedOn;
                    didCreateInNaas          = DbUtils.ToDbBool(item.Response.DidCreateInNaas);
                }
                if (string.IsNullOrEmpty(item.Id))
                {
                    id = IdProvider.Get();
                    DoInsert(TABLE_NAME, MAP_AUTH_REQUEST_COLUMNS, id, item.TransactionId, item.RequestGeneratedOn, item.RequestType,
                             item.NaasAccount, item.FullName, item.OrganizationAffiliation, item.TelephoneNumber,
                             item.EmailAddress, item.AffiliatedNodeId, item.AffiliatedCounty, item.PurposeDescription,
                             StringUtils.Join(",", item.RequestedNodeIds), authorizationAccountId,
                             authorizationComments, authorizationGeneratedOn, didCreateInNaas);
                }
                else
                {
                    id = item.Id;
                    DoSimpleUpdateOne(TABLE_NAME, "Id", id, MAP_AUTH_REQUEST_COLUMNS,
                                      id, item.TransactionId, item.RequestGeneratedOn, item.RequestType,
                                      item.NaasAccount, item.FullName, item.OrganizationAffiliation, item.TelephoneNumber,
                                      item.EmailAddress, item.AffiliatedNodeId, item.AffiliatedCounty, item.PurposeDescription,
                                      StringUtils.Join(",", item.RequestedNodeIds), authorizationAccountId,
                                      authorizationComments, authorizationGeneratedOn, didCreateInNaas);
                }

                // Update flow requests
                DeleteAllFlowsForRequest(id);
                SaveRequestedFlows(id, item.RequestedFlows);
                return(null);
            });
            if (string.IsNullOrEmpty(item.Id))
            {
                item.Id = id;
            }
        }
Пример #11
0
        static void Main(string[] args)
        {
            var consoleLogger = new ConsoleLogger();
            var idProvider    = new IdProvider();

            var taskManager = new Tasker(consoleLogger, idProvider);

            var task1 = new Task("Buy something", DateTime.Now.AddDays(2));
            var task2 = new Task("Move something.", DateTime.Now.AddDays(2));
            var task3 = new Task("Get something.", DateTime.Now.AddDays(2));

            taskManager.Save(task1);
            taskManager.Save(task2);
            taskManager.Delete(2);
            taskManager.Save(task3);
        }
Пример #12
0
        static void Main()
        {
            var fileLogger    = new FileLogger();
            var consoleLogger = new ConsoleLogger();
            var idProvider    = new IdProvider();

            var taskManager = new Tasker(consoleLogger, idProvider);

            var task1 = new taskManager.Models.Task("Kupi hlqb");
            var task2 = new taskManager.Models.Task("IzmiiKolata", DateTime.Now.AddDays(2));
            var task3 = new taskManager.Models.Task("Kupi bira", DateTime.Now);

            taskManager.save(task1);
            taskManager.save(task2);
            taskManager.Delete(2);
            taskManager.save(task3);
        }
Пример #13
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var carRepository    = new CarFileRepository("cars.json");
            var clientRepository = new ClientRepository("clients.json");
            var idProvider       = IdProvider.CreateIdProvider(carRepository, clientRepository);
            var setting          = new CarRentSettings(Configuration.GetValue <int>("MaxRentsWithoutCheckup"),
                                                       Configuration.GetValue <TimeSpan>("CheckupTime"));
            var administratorCarRental = new AdministratorCarRental(carRepository, idProvider);
            var clientCarRental        = new ClientCarRental(carRepository, clientRepository, idProvider, setting);

            services.AddSingleton <IAdministratorCarRental>(administratorCarRental);
            services.AddSingleton <IClientCarRental>(clientCarRental);

            ConfigureSecurity(services);

            services.AddMvc(o => o.Filters.Add(new ExceptionFilter()));
        }
Пример #14
0
        public void LimitTest()
        {
            IdProvider provider = new IdProvider(0, 1, 5);

            Assert.AreEqual(0, provider.Next());
            Assert.AreEqual(1, provider.Next());
            Assert.AreEqual(2, provider.Next());
            Assert.AreEqual(3, provider.Next());
            Assert.AreEqual(4, provider.Next());
            Assert.AreEqual(5, provider.Next());

            Assert.Throws <ArgumentOutOfRangeException>(() => provider.Next());

            provider.Remove(2);
            provider.Remove(3);

            Assert.DoesNotThrow(() => _ = provider.Next());
            Assert.DoesNotThrow(() => _ = provider.Next());

            Assert.Throws <ArgumentOutOfRangeException>(() => provider.Next());
        }
Пример #15
0
        List <ActionObjectPath> IFieldUpdateStrategy.GetFieldUpdateAction(CSOMItemField fld, Identity identity)
        {
            //Get field
            ObjectPathMethod getFieldByInternalNameMethod = new ObjectPathMethod
            {
                Id         = IdProvider.GetActionId(),
                ParentId   = FieldsProperty.Id,
                Name       = "GetByInternalNameOrTitle",
                Parameters = new MethodParameter()

                {
                    Properties = new List <Parameter>()
                    {
                        new Parameter()
                        {
                            Type  = "String",
                            Value = fld.FieldName
                        }
                    }
                }
            };

            MethodAction setFieldValueByValue = new MethodAction
            {
                ObjectPathId = getFieldByInternalNameMethod.Id.ToString(),
                Id           = IdProvider.GetActionId(),
                Name         = "SetFieldValueByValue",
                Parameters   = fld.GetRequestParameters(identity.Id)
            };

            return(new List <ActionObjectPath>()
            {
                new ActionObjectPath()
                {
                    Action = setFieldValueByValue,
                    ObjectPath = getFieldByInternalNameMethod
                }
            });
        }
Пример #16
0
        /// <summary>
        /// Create a new data request according to the input parameters and return the
        /// data request id.
        /// </summary>
        public string CreateDataRequest(string transactionId, string serviceId, int rowIndex, int maxRowCount,
                                        RequestType type, string userCreatorId, ByIndexOrNameDictionary <string> parameters)
        {
            string requestId = IdProvider.Get();

            TransactionTemplate.Execute(delegate {
                DoInsert(TABLE_NAME,
                         "Id;TransactionId;ServiceId;RowIndex;MaxRowCount;RequestType;ModifiedBy;ModifiedOn;ParamsByName",
                         requestId, transactionId, serviceId, rowIndex,
                         maxRowCount, type.ToString(), userCreatorId, DateTime.Now,
                         DbUtils.ToDbBool((parameters == null) ? true : parameters.IsByName));
                if (!CollectionUtils.IsNullOrEmpty(parameters))
                {
                    object[] insertValues = new object[4];
                    DoBulkInsert(ARGS_TABLE_NAME, "Id;RequestId;ArgName;ArgValue",
                                 delegate(int currentInsertIndex) {
                        if (currentInsertIndex < parameters.Count)
                        {
                            insertValues[0] = IdProvider.Get();
                            insertValues[1] = requestId;
                            if (parameters.IsByName)
                            {
                                insertValues[2] = parameters.KeyAtIndex(currentInsertIndex);
                            }
                            else
                            {
                                insertValues[2] = currentInsertIndex.ToString("D3");
                            }
                            insertValues[3] = parameters[currentInsertIndex];
                            return(insertValues);
                        }
                        return(null);
                    });
                }
                return(null);
            });
            return(requestId);
        }
Пример #17
0
        public IActionResult Create_round(CreateRoundCommand create_round_command)
        {
            _logger.LogInformation($"create round command: { create_round_command.TournamentId }");

            using (var msgpump = new MessagePump(_es))
            {
                var id_provider = new IdProvider();

                var context_manager   = new CreateRoundCommandContextManager(_es);
                var message_processor = new CreateRoundCommandProcessor(id_provider);
                msgpump.Register <CreateRoundCommand>(context_manager, message_processor);

                var result = msgpump.Handle(create_round_command) as CommandStatus;
                if (result is Success)
                {
                    return(Ok());
                }
                else
                {
                    return(BadRequest());
                }
            }
        }
Пример #18
0
        private void SaveNotificationsForUser(string userId, string modifiedByUserId,
                                              IList <KeyValuePair <string, NotificationType> > notifications)
        {
            if (CollectionUtils.IsNullOrEmpty(notifications))
            {
                return;
            }
            DateTime now = DateTime.Now;

            object[] insertValues = new object[12];
            DoBulkInsert(TABLE_NAME, "Id;FlowId;AccountId;OnSolicit;OnQuery;OnSubmit;OnNotify;OnSchedule;OnDownload;OnExecute;ModifiedBy;ModifiedOn",
                         delegate(int currentInsertIndex)
            {
                if (currentInsertIndex < notifications.Count)
                {
                    KeyValuePair <string, NotificationType> notification = notifications[currentInsertIndex];
                    NotificationType type = notification.Value;
                    insertValues[0]       = IdProvider.Get();
                    insertValues[1]       = notification.Key;
                    insertValues[2]       = userId;
                    insertValues[3]       = DbUtils.ToDbBool((type & NotificationType.OnSolicit) != 0);
                    insertValues[4]       = DbUtils.ToDbBool((type & NotificationType.OnQuery) != 0);
                    insertValues[5]       = DbUtils.ToDbBool((type & NotificationType.OnSubmit) != 0);
                    insertValues[6]       = DbUtils.ToDbBool((type & NotificationType.OnNotify) != 0);
                    insertValues[7]       = DbUtils.ToDbBool((type & NotificationType.OnSchedule) != 0);
                    insertValues[8]       = DbUtils.ToDbBool((type & NotificationType.OnDownload) != 0);
                    insertValues[9]       = DbUtils.ToDbBool((type & NotificationType.OnExecute) != 0);
                    insertValues[10]      = modifiedByUserId;
                    insertValues[11]      = now;
                    return(insertValues);
                }
                else
                {
                    return(null);
                }
            });
        }