public string[] SetIsFirstRowColomnName(NewsletterImportDefinition obj)
        {
            if (obj.FileName != null)
            {
                //De kolom namen opvragen als het true is, kolom namen maken als het false is.
                StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath("~/_temp/upload/csv/") + obj.FileName);

                int      columns     = 0;
                string[] columnNames = null;

                if (obj.Delimiter != null)
                {
                    if (obj.FirstRowIsColumnName == true)
                    {
                        columnNames = sr.ReadLine().Split(new string[] { obj.Delimiter }, StringSplitOptions.None);

                        return(columnNames);
                    }
                    else
                    {
                        columnNames = sr.ReadLine().Split(new string[] { obj.Delimiter }, StringSplitOptions.None);
                        columns     = columnNames.Count();

                        for (int i = 0; i < columns; i++)
                        {
                            columnNames[i] = "Kolom" + i;
                        }
                        return(columnNames);
                    }
                }
            }
            return(null);
        }
        public JsonResult DeleteImportDefinition(Guid id)
        {
            bool result = false;

            if (id != null)
            {
                NewsletterImportDefinition definition = BaseObject.GetById <NewsletterImportDefinition>(id);
                definition.Delete();
                result = true;
            }
            return(JsonResult.CreateResult(result));
        }
        public JsonResult ImportSubscribers(NewsletterImportDefinition obj)
        {
            Dictionary <string, object> returnObject = new Dictionary <string, object>();

            NewsletterImportDefinition importDef = obj;

            List <string> log = new List <string>();

            log = importDef.Validate();

            if (log.Count == 0)
            {
                if (importDef.SaveDefinition == true)
                {
                    importDef.Site  = SessionObject.CurrentSite;
                    importDef.IsNew = (importDef.ID == Guid.Empty);
                    importDef.Save();
                }

                if (importDef.DeleteGroupSubscribers == true)
                {
                    JsonResult result = DeleteSubscriberFromGroup(importDef.Groups);
                    if (result.Success == true)
                    {
                        importDef.EmptyGroups = false;
                    }
                }

                if (importDef.EmptyGroups == true)
                {
                    foreach (NewsletterGroup group in importDef.Groups)
                    {
                        group.Load();
                        if (group.IsMandatoryGroup != true)
                        {
                            group.Subscribers.Clear();
                            group.Save();
                        }
                    }
                }

                log = importDef.StartImport();

                string importLogFile = importDef.MakeErrorLogFile(log);

                returnObject.Add("ImportLogFile", importLogFile);
                returnObject.Add("Log", log);
            }

            return(JsonResult.CreateResult(true, "SUCCES", returnObject));
        }
        public string[] ReadFile(NewsletterImportDefinition obj)
        {
            // if (Messages == null) Messages = new List<ChatMessage>();
            // Messages.Add(obj);
            // File.WriteAllLines(@"C:\Users\emiel\Desktop\clark jquery\berichten.json", lines);
            // string output = JSONSerializer.Serialize(Messages);

            // TextWriter writer = new StreamWriter(Server.MapPath("")+"/berichten.txt", false);
            // writer.Write();
            // writer.Write(output);
            // writer.Close();
            // writer.Dispose();

            // return obj;
            // List<ImportDefinition> Messages = new List<ImportDefinition>();
            // List<string> ExampleRows = new List<string>();
            string[] examplerows = null;

            if (obj.FileExtension.ToLower() == ".csv" && obj.Delimiter != null && obj.FileName != null)
            {
                StreamReader sr = new StreamReader(HttpContext.Current.Server.MapPath("~/_temp/upload/csv/") + obj.FileName);

                string    RecordLine = sr.ReadLine();
                ArrayList Lines      = new ArrayList();
                while (RecordLine != null && Lines.Count < 2)
                {
                    Lines.Add(RecordLine);
                    RecordLine = sr.ReadLine();
                }

                if (obj.FirstRowIsColumnName == true)
                {
                    examplerows = Regex.Split(Lines[1].ToString(), obj.Delimiter);

                    sr.Close();
                    return(examplerows);
                }
                else
                {
                    examplerows = Regex.Split(Lines[0].ToString(), obj.Delimiter);

                    sr.Close();
                    return(examplerows);
                }
            }
            else
            {
                return(null);
            }
        }
        public NewsletterImportDefinition GetImportDefinition(Guid id)
        {
            if (id != Guid.Empty)
            {
                NewsletterImportDefinition definition = BaseObject.GetById <NewsletterImportDefinition>(id);
                // BaseCollection<ImportDefinitionGroups> ImportGroups = BaseCollection<ImportDefinitionGroups>.Get("FK_SITE='" + SessionObject.CurrentSite.ID + "' AND FK_Definition LIKE '" + definition.ID + "'", "FK_Definition");
                //definition.Subscribergroups = new HJORM.BaseCollection<BitPlate.Domain.Newsletters.NewsletterGroup>();

                //foreach (NewsletterGroup ImportGroup in definition.Groups)
                //{
                //NewsletterGroup groups = BaseObject.GetById<NewsletterGroup>(Guid.Parse(ImportGroup.FK_Group));
                //definition.Subscribergroups.Add(ImportGroup);
                //   definition.Save();
                //}
                definition.FileName = string.Empty;

                return(definition);
            }
            else
            {
                NewsletterImportDefinition definition = new NewsletterImportDefinition();
                return(definition);
            }
        }
        /* [WebMethod(EnableSession = true)]
         * [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
         * public static JsonResult LoadNewsletterConfig()
         * {
         *   NewsletterConfig config;
         *   BaseCollection<NewsletterConfig> configurations = BaseCollection<NewsletterConfig>.Get("FK_Site = '" + SessionObject.CurrentSite.ID.ToString() + "'");
         *   config = configurations.FirstOrDefault();
         *   if (config != null) config.Load();
         *   BaseCollection<CmsPage> OptPages = BaseCollection<CmsPage>.Get("FK_Site = '" + SessionObject.CurrentSite.ID.ToString() + "'");
         *   Dictionary<string, object> returnObject = new Dictionary<string, object>();
         *   returnObject.Add("NewsletterConfig", config);
         *   returnObject.Add("Pages", OptPages);
         *   return JsonResult.CreateResult(true, returnObject);
         * }
         *
         * [WebMethod(EnableSession = true)]
         * [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
         * public static JsonResult SaveNewsletterConfig(NewsletterConfig obj)
         * {
         *   if (obj.Site == null)
         *   {
         *       obj.Site = SessionObject.CurrentSite;
         *   }
         *   obj.Save();
         *   return JsonResult.CreateResult(true);
         * } */

        //[WebMethod(EnableSession = true)]
        //[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        //public static BaseCollection<NewsletterSubscriber> LoadSubscribers()
        //{
        //    BaseCollection<NewsletterSubscriber> subscribers = BaseCollection<NewsletterSubscriber>.Get();
        //    foreach (NewsletterSubscriber subscriber in subscribers)
        //    {
        //        if (subscriber.User == null)
        //        {
        //            subscriber.User = new SiteUser();
        //        }
        //    }
        //    return subscribers;
        //}



        public void UploadSubscriberFile(HttpContext context)
        {
            definition = new NewsletterImportDefinition();

            string fileName;

            if (!Directory.Exists(Server.MapPath("~/_temp")))
            {
                Directory.CreateDirectory(Server.MapPath("~/_temp"));
            }
            if (!Directory.Exists(Server.MapPath("~/_temp/upload")))
            {
                Directory.CreateDirectory(Server.MapPath("~/_temp/upload"));
            }


            if (context.Request.Files.Count >= 1)
            {
                HttpPostedFile HttpFile  = context.Request.Files[0];
                FileInfo       file      = new FileInfo(HttpFile.FileName);
                string         extension = file.Extension.ToLower();

                if (extension.ToLower() == ".csv")
                {
                    if (!Directory.Exists(context.Server.MapPath("~/_temp/upload/csv/")))
                    {
                        Directory.CreateDirectory(context.Server.MapPath("~/_temp/upload/csv/"));
                    }
                    HttpFile.SaveAs(context.Server.MapPath("~/_temp/upload/csv/") + HttpFile.FileName);
                    file     = new FileInfo(context.Server.MapPath("~/_temp/upload/csv/") + HttpFile.FileName);
                    fileName = HttpFile.FileName;

                    definition.FileExtension = extension;
                    definition.FileName      = fileName;

                    context.Response.Write(definition.ToJsonString());

                    return;
                }
                else if (extension.ToLower() == ".txt")
                {
                    if (!Directory.Exists(context.Server.MapPath("~/_temp/upload/txt/")))
                    {
                        Directory.CreateDirectory(context.Server.MapPath("~/_temp/upload/txt/"));
                    }
                    HttpFile.SaveAs(context.Server.MapPath("~/_temp/upload/txt/") + HttpFile.FileName);
                    file     = new FileInfo(Server.MapPath("~/_temp/upload/txt/") + HttpFile.FileName);
                    fileName = context.Server.MapPath("~/_temp/upload/txt/") + HttpFile.FileName;

                    definition.FileExtension = extension;
                    definition.FileName      = fileName;

                    context.Response.Write(definition.ToJsonString());

                    return;
                }
                else if (extension.ToLower() == ".xml")
                {
                    if (!Directory.Exists(context.Server.MapPath("~/_temp/upload/xml/")))
                    {
                        Directory.CreateDirectory(context.Server.MapPath("~/_temp/upload/xml"));
                    }
                    HttpFile.SaveAs(context.Server.MapPath("~/_temp/upload/xml/") + HttpFile.FileName);
                    file     = new FileInfo(context.Server.MapPath("~/_temp/upload/xml/") + HttpFile.FileName);
                    fileName = context.Server.MapPath("~/_temp/upload/xml/") + HttpFile.FileName;

                    definition.FileExtension = extension;
                    definition.FileName      = fileName;

                    context.Response.Write(definition.ToJsonString());
                    return;
                }
                else
                {
                    file.Delete();
                    definition.FileExtension = extension;

                    context.Response.Write(definition.ToJsonString());

                    return;
                }
            }
        }
 public NewsletterImportDefinition SetDelimiter(NewsletterImportDefinition obj)
 {
     return(obj);
 }