public JsonResult CreateInstaller([FromBody] Models.Installer installer) { using (var context = new Data.ApplicationDbContext()) { String authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject); Models.User authUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId)); if (authUser == null) { return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" })); } if (!Helpers.PermissionChecker.CanAddSite(authUser)) { return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to create installers" })); } if (installer.FName.Length == 0 && installer.LName.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have at least a first or last name" })); } else if (installer.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have a phone number" })); } context.Installers.Add(installer); context.SaveChanges(); Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateInstaller, authUser.Id, installer.Id, String.Format("{0} (id: {1}) created installer '{2}' (id: {3})", authUser.UserName, authUser.Id, installer.FName + " " + installer.LName, installer.Id)); return(Json(new { status_code = 0, installer })); } }
public JsonResult GetInstaller(int installerId) { using (var context = new Data.ApplicationDbContext()) { String authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject); Models.User authUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId)); if (authUser == null) { return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" })); } if (!Helpers.PermissionChecker.CanAddSite(authUser)) { return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to view installers" })); } Models.Installer installer = context.Installers.AsNoTracking().FirstOrDefault(i => i.Id == installerId); if (installer == null) { return(Json(new { status_code = 3, status = "Installer '" + installerId + "' does not exist" })); } return(Json(new { status_code = 0, installer })); } }
public JsonResult UpdateInstaller([FromBody] Models.Installer installer) { return(Json(new { status_code = -1, status = "Not yet implemented" })); }
public JsonResult Create([FromBody] Models.ActivationForm form, [RequiredFromQuery] int type) { if (type == 0) { // Create new site & activation using (var context = new Data.ApplicationDbContext()) { // Verify user exists & has permission String authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject); Models.User authUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId)); if (authUser == null) { return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" })); } if (!Helpers.PermissionChecker.CanAddSite(authUser)) { return(Json(new { status_code = 3, status = "User '" + authUser.UserName + "' does not have permission to activate sites" })); } // Used to check if installer object and/or manager object need to be added to database bool InstallerCreated = false, ManagerCreated = false, OwnerCreated = false; // #1 - Check installer // // if Id is 0, create new installer. Otherwise, verify installer exists if (form.SiteInstaller.Id != 0) { Models.Installer installer = context.Installers.AsNoTracking().FirstOrDefault(i => i.Id == form.SiteInstaller.Id); if (installer == null) { return(Json(new { status_code = 5, status = "Installer '" + form.SiteInstaller.Id + "' does not exist" })); } } else { if (form.SiteInstaller.FName.Length == 0 && form.SiteInstaller.LName.Length == 0) { return(Json(new { status_code = 5, status = "Installer must have at least a first or last name" })); } else if (form.SiteInstaller.Phone.Length == 0) { return(Json(new { status_code = 5, status = "Installer must have a phone number" })); } context.Installers.Add(form.SiteInstaller); InstallerCreated = true; } // #2 - Check manager // // Same logic as installer (0 = new, otherwise use existing) if (form.SiteManager.Id != 0) { Models.Manager manager = context.Managers.AsNoTracking().FirstOrDefault(m => m.Id == form.SiteManager.Id); if (manager == null) { return(Json(new { status_code = 5, status = "Manager '" + form.SiteManager.Id + "' does not exist" })); } } else { if (form.SiteManager.FName.Length == 0 && form.SiteManager.LName.Length == 0) { return(Json(new { status_code = 5, status = "Manager must have at least a first or last name" })); } else if (form.SiteManager.Phone.Length == 0) { return(Json(new { status_code = 5, status = "Manager must have a phone number" })); } context.Managers.Add(form.SiteManager); ManagerCreated = true; } // #3 - Verify new owner info // if (form.NewOwner.Id == 0) { if (context.Users.AsNoTracking().FirstOrDefault(u => form.NewOwner.UserName != null && u.UserName != null && form.NewOwner.UserName.ToLower().Equals(u.UserName.ToLower())) != null) { return(Json(new { status_code = 3, status = "User '" + form.NewOwner.UserName + "' already exists" })); } if (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password)) { return(Json(new { status_code = 4, status = "Invalid user creation body" })); } form.NewOwner.Active = true; form.NewOwner.Level = 2; // force user to be owner form.NewOwner.UserLastLogin = new DateTime(2000, 1, 1); OwnerCreated = true; } else { form.NewOwner = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewOwner.Id); if (form.NewOwner == null) { return(Json(new { status_code = 2, status = "Owner '" + form.NewOwner.Id + "' does not exist" })); } } if (!form.PreApproved && (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password))) { return(Json(new { status_code = 5, status = "Invalid user creation body" })); } // #4 - Create new site // // note: if site is pre-approved, new site will not be created // Verify site info Models.System system = context.Systems.AsNoTracking().FirstOrDefault(s => s.Id == form.NewSite.SystemId); if (system == null) { return(Json(new { status_code = 5, status = "Invalid system given", id = form.NewSite.SystemId })); } Models.User distrib = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewSite.SiteDistributor); if (distrib == null) { return(Json(new { status_code = 5, status = "Invalid distributor given" })); } if (form.NewSite.SiteName.Length == 0) { return(Json(new { status_code = 5, status = "No site name given" })); } if (!form.NewSite.SiteInstallDate.HasValue) { return(Json(new { status_code = 5, status = "Invalid install date" })); } if (form.NewSite.SiteAddress.Length == 0 || form.NewSite.SiteCity.Length == 0 || form.NewSite.SiteState.Length == 0 || form.NewSite.SiteCountry.Length == 0 || form.NewSite.SiteZip.Length < 5 || form.NewSite.SiteZip.Length > 10) { return(Json(new { status_code = 5, status = "Invalid site address given" })); } if (form.NewSite.SiteOwnerName.Length == 0) { return(Json(new { status_code = 5, status = "No owner name given" })); } if (form.NewSite.SiteOwnerEmail.Length == 0 && form.NewSite.SiteOwnerPhone.Length == 0) { return(Json(new { status_code = 5, status = "Need at least one way to contact owner (none given)" })); } // Generate site info if not pre-approved if (!form.PreApproved) { List <Models.Site> sites = context.Sites.AsNoTracking().OrderByDescending(s => s.SiteNumber).ToList(); int maxSiteNum = -1; foreach (Models.Site s in sites) { if (s.SiteNumber.HasValue) { maxSiteNum = (int)s.SiteNumber; break; } } form.NewSite.SiteNumber = ++maxSiteNum; form.NewSite.SiteActive = true; form.NewSite.SiteEnabled = true; form.NewSite.SiteLastPing = new DateTime(2000, 1, 1); form.NewSite.SiteLastIp = "127.0.0.1"; } // #5 - New activation row // // Need to save these to database to generate any IDs (in case new installer/manager is used, and for new site/owner) if site isn't pre-approved if (!form.PreApproved) { if (form.NewOwner.Id == 0) { context.Users.Add(form.NewOwner); } context.Sites.Add(form.NewSite); context.SaveChanges(); } // Verify that distributor has access to site // (because users can create distributors when activating site) Models.Permission permission = context.Permissions.FirstOrDefault(p => form.NewSite.SiteDistributor.HasValue && p.UserId == form.NewSite.SiteDistributor && p.SiteId == form.NewSite.SiteId); if (permission == null) { permission = new Models.Permission { UserId = (int)form.NewSite.SiteDistributor, SiteId = form.NewSite.SiteId, Access = 1, }; context.Permissions.Add(permission); } else if (permission.Access.HasValue && (int)permission.Access != 1) { permission.Access = 1; } // Set some default values for newly created sites form.NewSite.LastCommunityDrop = new DateTime(1970, 1, 1, 0, 0, 0); form.NewSite.LastGrandDrop = new DateTime(1970, 1, 1, 0, 0, 0); // Activation form needs to save what was submitted, not reflect current information // therefore, activation table essentially acts as a merged version of multiple tables form.ActivationInfo.SiteId = form.NewSite.SiteId; form.ActivationInfo.RoomName = form.NewSite.SiteName; form.ActivationInfo.SystemId = system.Id; form.ActivationInfo.StorePhone = form.NewSite.StorePhone; form.ActivationInfo.InstallerId = form.SiteInstaller.Id; form.ActivationInfo.InstallerFName = form.SiteInstaller.FName; form.ActivationInfo.InstallerLName = form.SiteInstaller.LName; form.ActivationInfo.InstallerEmail = form.SiteInstaller.Email; form.ActivationInfo.InstallerPhone = form.SiteInstaller.Phone; form.ActivationInfo.ManagerId = form.SiteManager.Id; form.ActivationInfo.ManagerFName = form.SiteManager.FName; form.ActivationInfo.ManagerLName = form.SiteManager.LName; form.ActivationInfo.ManagerEmail = form.SiteManager.Email; form.ActivationInfo.ManagerPhone = form.SiteManager.Phone; form.ActivationInfo.OwnerId = form.NewOwner.Id; form.ActivationInfo.OwnerFName = form.NewOwner.FName; form.ActivationInfo.OwnerLName = form.NewOwner.LName; form.ActivationInfo.OwnerEmail = form.NewOwner.Email; form.ActivationInfo.OwnerPhone = form.NewOwner.Phone; form.ActivationInfo.OwnerUserName = form.NewOwner.UserName; form.ActivationInfo.DistributorId = distrib.Id; form.ActivationInfo.DistributorFName = distrib.FName; form.ActivationInfo.DistributorLName = distrib.LName; form.ActivationInfo.SiteAddress = form.NewSite.SiteAddress; form.ActivationInfo.SiteCity = form.NewSite.SiteCity; form.ActivationInfo.SiteState = form.NewSite.SiteState; form.ActivationInfo.SiteCountry = form.NewSite.SiteCountry; form.ActivationInfo.SiteZip = form.NewSite.SiteZip; form.ActivationInfo.SubmissionDate = DateTime.UtcNow; // #6 - Create permission for new site if (!form.PreApproved) { Models.Permission newSitePermission = new Models.Permission { Access = 1, SiteId = form.NewSite.SiteId, UserId = form.NewOwner.Id }; context.Permissions.Add(newSitePermission); } // Since these objects aren't being created through their respective controllers, need to manually log them if (InstallerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateInstaller, authUser.Id, form.SiteInstaller.Id, String.Format("{0} (id: {1}) created installer '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteInstaller.FName + " " + form.SiteInstaller.LName, form.SiteInstaller.Id)); } if (ManagerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateManager, authUser.Id, form.SiteManager.Id, String.Format("{0} (id: {1}) created manager '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteManager.FName + " " + form.SiteManager.LName, form.SiteManager.Id)); } if (!form.PreApproved) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateUser, authUser.Id, form.NewOwner.Id, String.Format("{0} (id: {1}) created user {2} (id: {3})", authUser.UserName, authUser.Id, form.NewOwner.UserName, form.NewOwner.Id)); Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) created site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); } // #7 - Save all final info to database (all information has been verified by this point) // context.Activations.Add(form.ActivationInfo); context.SaveChanges(); // #8 - Logging and alerting // log Helpers.LogHelper.LogAction(Models.Log.ActionType.ActivateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) activated site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); // send to Zapier to handle proper notification var json = new { SiteId = form.NewSite.SiteNumber, form.NewSite.SiteName, SystemName = system.Name, form.ActivationInfo.SystemId, form.NewSite.StorePhone, form.SiteInstaller, form.SiteManager, NewOwner = new { form.NewOwner.Active, form.NewOwner.Email, form.NewOwner.FName, form.NewOwner.LName, form.NewOwner.Phone, form.NewOwner.UserName }, SiteDistributor = new { distrib.Active, distrib.Email, distrib.FName, distrib.LName, distrib.Phone, distrib.UserName }, form.NewSite.SiteAddress, form.NewSite.SiteCity, form.NewSite.SiteState, form.NewSite.SiteCountry, form.NewSite.SiteZip, SubmissionDate = form.ActivationInfo.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), form.ActivationInfo.ActivationNotes }; Helpers.LogHelper.NotifyAction(Models.Log.ActionType.ActivateSite, json); } return(Json(new { status_code = 0, form.NewSite.SiteId })); } else if (type == 1) { // Just create new activation. Site was already approved through old report portal. using (var context = new Data.ApplicationDbContext()) { // Verify user exists & has permission String authUserId = User.GetClaim(OpenIdConnectConstants.Claims.Subject); Models.User authUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id.ToString().Equals(authUserId)); if (authUser == null) { return(Json(new { status_code = 2, status = "User '" + authUserId + "' does not exist" })); } if (!Helpers.PermissionChecker.CanAddSite(authUser)) { return(Json(new { status_code = 1, status = "User '" + authUser.UserName + "' does not have permission to activate sites" })); } bool InstallerCreated = false, ManagerCreated = false, OwnerCreated = false; // #1 - Check installer // // if Id is 0, create new installer. Otherwise, verify installer exists if (form.SiteInstaller.Id != 0) { Models.Installer installer = context.Installers.AsNoTracking().FirstOrDefault(i => i.Id == form.SiteInstaller.Id); if (installer == null) { return(Json(new { status_code = 2, status = "Installer '" + form.SiteInstaller.Id + "' does not exist" })); } } else { if (form.SiteInstaller.FName.Length == 0 && form.SiteInstaller.LName.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have at least a first or last name" })); } else if (form.SiteInstaller.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Installer must have a phone number" })); } context.Installers.Add(form.SiteInstaller); InstallerCreated = true; } // #2 - Check manager // // Same logic as installer (0 = new, otherwise use existing) if (form.SiteManager.Id != 0) { Models.Manager manager = context.Managers.AsNoTracking().FirstOrDefault(m => m.Id == form.SiteManager.Id); if (manager == null) { return(Json(new { status_code = 2, status = "Manager '" + form.SiteManager.Id + "' does not exist" })); } } else { if (form.SiteManager.FName.Length == 0 && form.SiteManager.LName.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have at least a first or last name" })); } else if (form.SiteManager.Phone.Length == 0) { return(Json(new { status_code = 4, status = "Manager must have a phone number" })); } context.Managers.Add(form.SiteManager); ManagerCreated = true; } // #3 - Verify new owner info // if (form.NewOwner.Id == 0) { if (context.Users.AsNoTracking().FirstOrDefault(u => form.NewOwner.UserName != null && u.UserName != null && form.NewOwner.UserName.ToLower().Equals(u.UserName.ToLower())) != null) { return(Json(new { status_code = 3, status = "User '" + form.NewOwner.UserName + "' already exists" })); } if (String.IsNullOrWhiteSpace(form.NewOwner.UserName) || String.IsNullOrWhiteSpace(form.NewOwner.Password)) { return(Json(new { status_code = 4, status = "Invalid user creation body" })); } form.NewOwner.Active = true; form.NewOwner.Level = 2; // force user to be owner form.NewOwner.UserLastLogin = new DateTime(2000, 1, 1); OwnerCreated = true; } else { form.NewOwner = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewOwner.Id); if (form.NewOwner == null) { return(Json(new { status_code = 2, status = "Owner '" + form.NewOwner.Id + "' does not exist" })); } } // #4 - Create new site // // Verify site info Models.System system = context.Systems.AsNoTracking().FirstOrDefault(s => s.Id == form.NewSite.SystemId); if (system == null) { return(Json(new { status_code = 4, status = "Invalid system given", id = form.NewSite.SystemId })); } Models.User distrib = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == form.NewSite.SiteDistributor); if (distrib == null) { return(Json(new { status_code = 4, status = "Invalid distributor given" })); } if (form.NewSite.SiteName.Length == 0) { return(Json(new { status_code = 4, status = "No site name given" })); } if (!form.NewSite.SiteInstallDate.HasValue || form.NewSite.SiteInstallDate > DateTime.UtcNow) { return(Json(new { status_code = 4, status = "Invalid install date" })); } if (form.NewSite.SiteAddress.Length == 0 || form.NewSite.SiteCity.Length == 0 || form.NewSite.SiteState.Length == 0 || form.NewSite.SiteCountry.Length == 0 || form.NewSite.SiteZip.Length < 5 || form.NewSite.SiteZip.Length > 10) { return(Json(new { status_code = 4, status = "Invalid site address given" })); } if (form.NewSite.SiteOwnerName.Length == 0) { return(Json(new { status_code = 4, status = "No owner name given" })); } if (form.NewSite.SiteOwnerEmail.Length == 0 && form.NewSite.SiteOwnerPhone.Length == 0) { return(Json(new { status_code = 4, status = "Need at least one way to contact owner (none given)" })); } // Copy over any modified info if site is pre-approved if (form.PreApproved) { Models.Site currentSite = context.Sites.FirstOrDefault(s => s.SiteId == form.NewSite.SiteId); currentSite.Copy(form.NewSite, false); context.SaveChanges(); } // #5 - New activation row // // Need to save these to database to generate any IDs (in case new installer/manager is used, and for new site/owner) if (form.NewOwner.Id == 0) { context.Users.Add(form.NewOwner); context.SaveChanges(); } // Activation form needs to save what was submitted, not reflect current information // therefore, activation table essentially acts as a merged version of multiple tables form.ActivationInfo.SiteId = form.NewSite.SiteId; form.ActivationInfo.RoomName = form.NewSite.SiteName; form.ActivationInfo.SystemId = system.Id; form.ActivationInfo.StorePhone = form.NewSite.StorePhone; form.ActivationInfo.InstallerId = form.SiteInstaller.Id; form.ActivationInfo.InstallerFName = form.SiteInstaller.FName; form.ActivationInfo.InstallerLName = form.SiteInstaller.LName; form.ActivationInfo.InstallerEmail = form.SiteInstaller.Email; form.ActivationInfo.InstallerPhone = form.SiteInstaller.Phone; form.ActivationInfo.ManagerId = form.SiteManager.Id; form.ActivationInfo.ManagerFName = form.SiteManager.FName; form.ActivationInfo.ManagerLName = form.SiteManager.LName; form.ActivationInfo.ManagerEmail = form.SiteManager.Email; form.ActivationInfo.ManagerPhone = form.SiteManager.Phone; form.ActivationInfo.OwnerId = form.NewOwner.Id; form.ActivationInfo.OwnerFName = form.NewOwner.FName; form.ActivationInfo.OwnerLName = form.NewOwner.LName; form.ActivationInfo.OwnerEmail = form.NewOwner.Email; form.ActivationInfo.OwnerPhone = form.NewOwner.Phone; form.ActivationInfo.OwnerUserName = form.NewOwner.UserName; form.ActivationInfo.DistributorId = distrib.Id; form.ActivationInfo.DistributorFName = distrib.FName; form.ActivationInfo.DistributorLName = distrib.LName; form.ActivationInfo.SiteAddress = form.NewSite.SiteAddress; form.ActivationInfo.SiteCity = form.NewSite.SiteCity; form.ActivationInfo.SiteState = form.NewSite.SiteState; form.ActivationInfo.SiteCountry = form.NewSite.SiteCountry; form.ActivationInfo.SiteZip = form.NewSite.SiteZip; form.ActivationInfo.SubmissionDate = DateTime.UtcNow; // #6 - Create permission for new site Models.Permission sitePermission = context.Permissions.AsNoTracking().FirstOrDefault(p => p.UserId == form.NewOwner.Id && p.SiteId == form.NewSite.SiteId); if (sitePermission == null) { sitePermission = new Models.Permission { Access = 1, SiteId = form.NewSite.SiteId, UserId = form.NewOwner.Id }; context.Permissions.Add(sitePermission); } // Since these objects aren't being created through their respective controllers, need to manually log them if (InstallerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateInstaller, authUser.Id, form.SiteInstaller.Id, String.Format("{0} (id: {1}) created installer '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteInstaller.FName + " " + form.SiteInstaller.LName, form.SiteInstaller.Id)); } if (ManagerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateManager, authUser.Id, form.SiteManager.Id, String.Format("{0} (id: {1}) created manager '{2}' (id: {3})", authUser.UserName, authUser.Id, form.SiteManager.FName + " " + form.SiteManager.LName, form.SiteManager.Id)); } if (OwnerCreated) { Helpers.LogHelper.LogAction(Models.Log.ActionType.CreateUser, authUser.Id, form.NewOwner.Id, String.Format("{0} (id: {1}) created user {2} (id: {3})", authUser.UserName, authUser.Id, form.NewOwner.UserName, form.NewOwner.Id)); } // #7 - Save all final info to database (all information has been verified by this point) // // check if form is pre-approved thru old RP if (form.PreApproved) { form.ActivationInfo.ApprovedBy = -1; form.ActivationInfo.ApprovalNotes = "This site was pre-approved through old report portal."; } context.Activations.Add(form.ActivationInfo); context.SaveChanges(); // #8 - Logging and alerting // log Helpers.LogHelper.LogAction(Models.Log.ActionType.ActivateSite, authUser.Id, form.NewSite.SiteId, String.Format("{0} (id: {1}) reactivated site '{2}' (site number: {3})", authUser.UserName, authUser.Id, form.NewSite.SiteName, form.NewSite.SiteNumber)); // send to Zapier to handle proper notification var json = new { SiteId = form.NewSite.SiteNumber, form.NewSite.SiteName, SystemName = system.Name, form.ActivationInfo.SystemId, form.NewSite.StorePhone, form.SiteInstaller, form.SiteManager, NewOwner = new { form.NewOwner.Active, form.NewOwner.Email, form.NewOwner.FName, form.NewOwner.LName, form.NewOwner.Phone, form.NewOwner.UserName }, SiteDistributor = new { distrib.Active, distrib.Email, distrib.FName, distrib.LName, distrib.Phone, distrib.UserName }, form.NewSite.SiteAddress, form.NewSite.SiteCity, form.NewSite.SiteState, form.NewSite.SiteCountry, form.NewSite.SiteZip, SubmissionDate = form.ActivationInfo.SubmissionDate.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"), form.ActivationInfo.ActivationNotes }; Helpers.LogHelper.NotifyAction(Models.Log.ActionType.ActivateSite, json); } return(Json(new { status_code = 0 })); } else { return(Json(new { status_code = 5, status = "Unknown status code '" + type + "'" })); } }