Exemple #1
0
        public async Task <Function> CreateAsync(FunctionSubmit functionSubmit, Guid createdByGuid)
        {
            // Start transactions to allow complete rollback in case of an error
            BeginAllTransactions();

            try
            {
                var function = new FunctionModel();

                function.Name                = functionSubmit.Name;
                function.Description         = functionSubmit.Description;
                function.FunctionPermissions = new List <FunctionPermissionModel>();
                function.ChangedBy           = createdByGuid;

                await CheckForApplicationAndAssignToFunctionIfExists(function, functionSubmit);
                await CheckThatPermissionsExistAndAssignToFunction(function, functionSubmit);

                // All successful
                CommitAllTransactions();

                return(mapper.Map <Function>(await functionRepository.CreateAsync(function)));
            }
            catch (Exception ex)
            {
                logger.Error(ex);
                RollbackAllTransactions();
                throw;
            }
        }
Exemple #2
0
        public async Task <Function> CreateAsync(FunctionSubmit functionSubmit, Guid createdByGuid)
        {
            // Start transactions to allow complete rollback in case of an error
            InitSharedTransaction();

            try
            {
                FunctionModel existingFunction = await functionRepository.GetByNameAsync(functionSubmit.Name);

                if (existingFunction != null)
                {
                    throw new ItemNotProcessableException($"Function with Name '{functionSubmit.Name}' already exist.");
                }

                var function = new FunctionModel
                {
                    Name                = functionSubmit.Name,
                    Description         = functionSubmit.Description,
                    FunctionPermissions = new List <FunctionPermissionModel>(),
                    ChangedBy           = createdByGuid
                };

                await CheckForApplicationAndAssignToFunctionIfExists(function, functionSubmit);
                await CheckForSubRealmAndAssignToFunctionIfExists(function, functionSubmit);
                await CheckThatPermissionsExistAndAssignToFunction(function, functionSubmit);

                // All successful
                CommitTransaction();

                return(mapper.Map <Function>(await functionRepository.CreateAsync(function)));
            }
            catch
            {
                RollbackTransaction();
                throw;
            }
        }