예제 #1
0
        public ActionResult <Result <bool> > CreateTask([FromBody] CreateTaskRQ body)
        {
            if (string.IsNullOrEmpty(body.Name))
            {
                return(Result <bool> .Fail("Name cannot be empty."));
            }

            if (body.TemplateId <= 0)
            {
                return(Result <bool> .Fail("A template must be selected."));
            }

            var taskExists = _taskRepo.TaskExists(body.Name);

            if (taskExists)
            {
                return(Result <bool> .Fail($"Task '{body.Name}' already exists."));
            }

            var newDbName = NameHelper.TaskName();

            var alreadyRegistered = _taskRepo.DatabaseRegisteredAsTask(newDbName);

            if (alreadyRegistered)
            {
                return(Result <bool> .Fail($"Generated name is already used for another task. Please try again."));
            }

            var existsOnSqlServer = _microsoftSQLService.DatabaseExists(newDbName);

            if (existsOnSqlServer)
            {
                return(Result <bool> .Fail($"Generated name is not unique. Please try again."));
            }

            var templateEntity = _templateRepo.Get(body.TemplateId);
            var cloneSuccess   = _microsoftSQLService.CloneDatabase(templateEntity.NameOnServer, newDbName, true, true);

            if (!cloneSuccess)
            {
                return(Result <bool> .Fail($"Failed to clone database '{templateEntity.NameOnServer}' into '{newDbName}'."));
            }

            var success = _taskRepo.Create(body, newDbName, UserId);

            if (success)
            {
                return(Result <bool> .Success(true));
            }
            else
            {
                return(Result <bool> .Fail("Failed to save changes."));
            }
        }
예제 #2
0
        public bool Create(CreateTaskRQ request, string nameOnServer, Guid userId)
        {
            var taskEntity = new TaskEntity() //AutoMapper
            {
                Name         = request.Name,
                TemplateId   = request.TemplateId,
                NameOnServer = nameOnServer,
                DateCreated  = DateTime.UtcNow,
                CreatedBy    = userId,
            };

            _context.Tasks.Add(taskEntity);
            return(_context.SaveChanges() == 1);
        }