private NLPExcelExportModel WriteIntentionExcel(List <Intention> intentions)
        {
            int RowCount = 0;
            NLPExcelExportModel excelExportModel = new NLPExcelExportModel();

            excelExportModel.SheetName = "Intentions";

            excelExportModel.Columns = new string[3];

            excelExportModel.Columns[0] = "ID";
            excelExportModel.Columns[1] = "Intention Name";
            excelExportModel.Columns[2] = "Updated At";

            List <Intention> filteredIntentions = intentions.Where(x => x.IsDeleted == false).ToList();

            excelExportModel.SheetValues = new string[filteredIntentions.Count, excelExportModel.Columns.Length];

            foreach (var intent in filteredIntentions)
            {
                excelExportModel.SheetValues[RowCount, 0] = intent.Id;
                excelExportModel.SheetValues[RowCount, 1] = intent.Name;
                excelExportModel.SheetValues[RowCount, 2] = intent.StorageDate.GetValueOrDefault().ToString("dd/MM/yyyy hh:mm:ss");

                RowCount++;
            }

            return(excelExportModel);
        }
        private NLPExcelExportModel WriteEntitiesExcel(List <Entity> entities)
        {
            int RowCount           = 0;
            int TotalEntitiesValue = 0;

            NLPExcelExportModel excelExportModel = new NLPExcelExportModel();

            excelExportModel.SheetName = "Entities";

            excelExportModel.Columns = new string[4];

            excelExportModel.Columns[0] = "ID";
            excelExportModel.Columns[1] = "Entity Name";
            excelExportModel.Columns[2] = "Value Name";
            excelExportModel.Columns[3] = "Synonymous";

            List <Entity> filteredEntities = entities.Where(x => x.IsDeleted == false).ToList();

            filteredEntities.ForEach(delegate(Entity entity)
            {
                EntityValues[] questions = entity.Values;

                if (questions == null)
                {
                    TotalEntitiesValue = TotalEntitiesValue + 1;
                }
                else
                {
                    TotalEntitiesValue = TotalEntitiesValue + questions.Length;
                }
            });

            excelExportModel.SheetValues = new string[TotalEntitiesValue, excelExportModel.Columns.Length];

            foreach (var entity in filteredEntities)
            {
                if (entity.Values == null)
                {
                    excelExportModel.SheetValues[RowCount, 0] = entity.Id;
                    excelExportModel.SheetValues[RowCount, 1] = entity.Name;
                    excelExportModel.SheetValues[RowCount, 2] = string.Empty;
                    excelExportModel.SheetValues[RowCount, 3] = string.Empty;

                    RowCount++;
                    continue;
                }

                foreach (var item in entity.Values)
                {
                    excelExportModel.SheetValues[RowCount, 0] = entity.Id;
                    excelExportModel.SheetValues[RowCount, 1] = entity.Name;
                    excelExportModel.SheetValues[RowCount, 2] = item.Name;
                    excelExportModel.SheetValues[RowCount, 3] = string.Join(";", item.Synonymous);

                    RowCount++;
                }
            }

            return(excelExportModel);
        }
        private NLPExcelExportModel WriteQuestionsExcel(List <Intention> intentions)
        {
            int RowCount       = 0;
            int TotalQuestions = 0;

            NLPExcelExportModel excelExportModel = new NLPExcelExportModel();

            excelExportModel.SheetName = "Questions";

            excelExportModel.Columns = new string[2];

            excelExportModel.Columns[0] = "Intention Name";
            excelExportModel.Columns[1] = "Question";

            List <Intention> filteredIntentions = intentions.Where(x => x.IsDeleted == false).ToList();

            filteredIntentions.ForEach(delegate(Intention intent)
            {
                Question[] questions = intent.Questions;

                if (questions == null)
                {
                    TotalQuestions = TotalQuestions + 1;
                }
                else
                {
                    TotalQuestions = TotalQuestions + questions.Length;
                }
            });

            excelExportModel.SheetValues = new string[TotalQuestions, excelExportModel.Columns.Length];

            foreach (var intent in filteredIntentions)
            {
                if (intent.Questions == null)
                {
                    excelExportModel.SheetValues[RowCount, 0] = intent.Name;
                    excelExportModel.SheetValues[RowCount, 1] = string.Empty;

                    RowCount++;
                    continue;
                }

                foreach (var question in intent.Questions)
                {
                    excelExportModel.SheetValues[RowCount, 0] = intent.Name;
                    excelExportModel.SheetValues[RowCount, 1] = question.Text;

                    RowCount++;
                }
            }

            return(excelExportModel);
        }