public ContentResult Save(ceContentProviderBase updatedProvider , HttpPostedFileBase logoFile) { if (!DomainManager.AllowEdit()) { throw new Exception("Data modified is not allowed"); } try { string logoImageFilePath = null; string imageFileName; byte[] imageBuffer; if (ImageAsset.ParseImage(logoFile, out imageFileName, out imageBuffer)) { logoImageFilePath = ImageAsset.GetImageFtpFilePath(imageFileName); FTP.UploadFile(DomainManager.CurrentDomainID, logoImageFilePath, imageBuffer); } using (DbManager db = new DbManager()) { if (DomainManager.CurrentDomainID == Constant.SystemDomainID) { if (string.IsNullOrWhiteSpace(updatedProvider.Identifying)) { throw new ArgumentNullException("Identifying"); } if (string.IsNullOrWhiteSpace(updatedProvider.Name)) { throw new ArgumentNullException("Name"); } if (!string.IsNullOrWhiteSpace(updatedProvider.Name)) { updatedProvider.Name = Regex.Replace(updatedProvider.Name, @"[^a-z_\-\d]", string.Empty, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ECMAScript | RegexOptions.Compiled); if (Regex.IsMatch(updatedProvider.Name, "^(\\d+)$", RegexOptions.CultureInvariant | RegexOptions.Compiled)) { throw new Exception("The name can not only contain digits."); } } SqlQuery <ceContentProviderBase> query = new SqlQuery <ceContentProviderBase>(db); ceContentProviderBase provider = null; if (updatedProvider.ID > 0) { provider = query.SelectByKey(updatedProvider.ID); } if (provider == null) { provider = new ceContentProviderBase(); provider.Ins = DateTime.Now; provider.Enabled = true; } bool changed = false; if (string.IsNullOrWhiteSpace(provider.Identifying) && provider.Identifying != updatedProvider.Identifying) { provider.Identifying = updatedProvider.Identifying; changed = true; } if (provider.Name != updatedProvider.Name) { provider.Name = updatedProvider.Name; changed = true; } if (!string.IsNullOrWhiteSpace(logoImageFilePath)) { if (provider.Logo != logoImageFilePath) { provider.Logo = logoImageFilePath; changed = true; } } if (provider.ID > 0) { if (changed) { query.Update(db, provider); } } else { query.Insert(db, provider); } } else if (updatedProvider.ID > 0) { SqlQuery <ceContentProviderBase> queryBase = new SqlQuery <ceContentProviderBase>(db); ceContentProviderBase providerBase = queryBase.SelectByKey(updatedProvider.ID); SqlQuery <ceContentProvider> query = new SqlQuery <ceContentProvider>(db); ContentProviderAccessor cpa = ContentProviderAccessor.CreateInstance <ContentProviderAccessor>(); ceContentProvider provider = cpa.QueryDomainProvider(updatedProvider.ID, DomainManager.CurrentDomainID); if (provider == null) { provider = new ceContentProvider(); provider.ContentProviderBaseID = providerBase.ID; provider.Enabled = null; provider.Ins = DateTime.Now; provider.Logo = null; provider.DomainID = DomainManager.CurrentDomainID; } bool changed = false; if (!string.IsNullOrWhiteSpace(logoImageFilePath)) { if (providerBase.Logo != updatedProvider.Logo) { provider.Logo = logoImageFilePath; } else { provider.Logo = null; } changed = true; } if (provider.ID > 0) { if (changed) { query.Update(db, provider); } } else { query.Insert(db, provider); } } } string script = "<script language=\"javascript\" type=\"text/javascript\">top.onSaved(true, '');</script>"; return(this.Content(script, "text/html")); } catch (Exception ex) { Logger.Exception(ex); string script = string.Format("<script language=\"javascript\" type=\"text/javascript\">top.onSaved(false, '{0}');</script>", ex.Message.SafeJavascriptStringEncode()); return(this.Content(script, "text/html")); } }
public JsonResult Enable(long[] providerIDs, bool enable) { if (!DomainManager.AllowEdit()) { throw new Exception("Data modified is not allowed"); } try { if (!CurrentUserSession.IsSystemUser) { throw new CeException("You are not allowed to perform this operation."); } SqlQuery <ceContentProviderBase> query1 = new SqlQuery <ceContentProviderBase>(); SqlQuery <ceContentProvider> query2 = new SqlQuery <ceContentProvider>(); ContentProviderAccessor cpa = ContentProviderAccessor.CreateInstance <ContentProviderAccessor>(); foreach (int providerID in providerIDs) { if (CurrentUserSession.IsSystemUser && DomainManager.CurrentDomainID == Constant.SystemDomainID) { ceContentProviderBase baseProvider = query1.SelectByKey(providerID); baseProvider.Enabled = enable; query1.Update(baseProvider); } else { ceContentProvider provider = cpa.QueryDomainProvider(providerID, DomainManager.CurrentDomainID); if (provider == null) { provider = new ceContentProvider(); provider.DomainID = DomainManager.CurrentDomainID; provider.ContentProviderBaseID = providerID; provider.Logo = null; provider.Ins = DateTime.Now; provider.Enabled = enable; query2.Insert(provider); } else { if (string.IsNullOrWhiteSpace(provider.Logo)) { provider.Logo = null; } provider.Enabled = enable; query2.Update(provider); } } } return(this.Json(new { success = true }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { Logger.Exception(ex); return(this.Json(new { success = false, error = ex.Message }, JsonRequestBehavior.AllowGet)); } }