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.")); } }