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; } }
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; } }