示例#1
0
        public ActionResult <Result <bool> > CreateTemplate([FromBody] CreateTemplateRQ body)
        {
            if (string.IsNullOrEmpty(body.Name))
            {
                return(Result <bool> .Fail($"Name cannot be empty."));
            }

            var templateExists = _templateRepo.TemplateExists(body.Name);

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

            var newDbName         = NameHelper.TemplateName();
            var alreadyRegistered = _templateRepo.DatabaseRegisteredAsTemplate(newDbName);

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

            var existsOnSqlServer = _microsoftSQLService.DatabaseExists(newDbName);

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

            var dbCreateSuccess = _microsoftSQLService.CreateDatabase(newDbName, true);

            if (!dbCreateSuccess)
            {
                return(Result <bool> .Fail($"Failed to create databse '{newDbName}' on database server"));
            }

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

            if (success)
            {
                return(Result <bool> .Success(true));
            }
            else
            {
                return(Result <bool> .Fail("Failed to save changes."));
            }
        }