Пример #1
0
        public override void HandleAutoTask()
        {
            LogManager.Instance.Write("Start CompanyOrder Handler ******************************************************");

            using (var cache = new EntityCache <CompanyOrder, CHCContext>(p => p.Locked == true && p.IsBuildCompleted == false))
            {
                while (true)
                {
                    LogManager.Instance.Write(cache.Results.Count().ToString());

                    var importExportService = new ImportExportService();
                    var companyOrderService = new CompanyOrderService(null, importExportService, null, null);
                    if (cache.Results.Count() > 0)
                    {
                        foreach (var order in cache.Results)
                        {
                            companyOrderService.ExportCompanyOrderForms(ConfigurationManager.AppSettings["CHCWebRootPath"], order);

                            using (var context = new CHCContext())
                            {
                                var entity = context.CompanyOrder.SingleOrDefault(e => e.Id == order.Id);
                                entity.Locked           = true;
                                entity.IsBuildCompleted = true;
                                context.SaveChanges();
                            }
                        }
                    }

                    Thread.Sleep(5000);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Import the workflow config from the json file
        /// </summary>
        public static void Config()
        {
            var service = new ImportExportService();
            var model   = ReadFromJsonFile <ImportExportModel>(@"Config.json");

            service.Import(model);
        }
Пример #3
0
        /// <summary>
        /// Expressions import call method
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void выраженияToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ImportExportResult result = ImportExportService.importExpressions(dataGridView_expressions);

            if (result.status.Equals(ImportExportResultStatus.Error))
            {
                richTextBox_log.AppendText(result.messageString + '\n');
                MessageBox.Show(result.messageString, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Пример #4
0
 public AdminController(ProductCharacteristicService productCharacteristicService, ImageFileService fileService,
                        BrandService brandService, CategoryService categoryService, ProductService productService, ImportExportService importExportService)
 {
     _fileService     = fileService;
     _brandService    = brandService;
     _categoryService = categoryService;
     _productService  = productService;
     _productCharacteristicService = productCharacteristicService;
     _importExportService          = importExportService;
 }
Пример #5
0
        /// <summary>
        /// Results export call method
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void результатыОбработкиToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ImportExportResult result = ImportExportService.exportResults(richTextBox_log);

            switch (result.status)
            {
            case ImportExportResultStatus.Success:
                MessageBox.Show(result.messageString, "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
                break;

            case ImportExportResultStatus.Error:
                MessageBox.Show(result.messageString, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
            }
        }
Пример #6
0
        /// <summary>
        /// Expressions export call method
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void выраженияToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            ImportExportResult result = ImportExportService.exportExpressions(dataGridView_expressions);

            switch (result.status)
            {
            case ImportExportResultStatus.Success:
                MessageBox.Show(result.messageString, "Информация", MessageBoxButtons.OK, MessageBoxIcon.Information);
                break;

            case ImportExportResultStatus.Error:
                MessageBox.Show(result.messageString, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
            }
        }
Пример #7
0
        public void PredictMergedReferentials_Tests()
        {
            SampleData.ClearDatabaseThenImportDefaultProject();

            // Exporter le projet
            var service = new ImportExportService();

            var       mre    = new System.Threading.ManualResetEvent(false);
            Stream    stream = null;
            Exception e      = null;

            service.ExportProject(SampleData.GetProjectId(), d =>
            {
                stream = d;
                mre.Set();
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);
            Assert.IsNotNull(stream);

            stream.Position = 0;

            byte[] importData;
            using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream, StreamExtensions.BufferSize); importData = memoryStream.ToArray(); }

            // PredictMergedReferentials
            mre.Reset();
            KProcess.Ksmed.Business.Dtos.Export.ProjectImport import = null;
            service.PredictMergedReferentialsProject(importData, pi =>
            {
                import = pi;
                mre.Set();
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);
            Assert.IsNotNull(import);
        }
        public void CanMapFromIni()
        {
            var         data   = LoadDataIni();
            IDictionary map    = data as IDictionary;
            var         io     = new ImportExportService <Conference>();
            var         result = io.Load(map, "ini");

            Assert.AreEqual(result.Item[0].Title, data.GetSection("post", 0).Get <string>("Title"));
            Assert.AreEqual(result.Item[0].StartDate.Date, DateTime.Today.Date);
            Assert.AreEqual(result.Item[0].StartTime, new TimeSpan(21, 30, 0));
            Assert.AreEqual(result.Item[0].IsFree, true);
            Assert.AreEqual(result.Item[0].MaxSeats, data.GetSection("post", 0).Get <int>("MaxSeats"));
            Assert.AreEqual(result.Item[0].Cost, 250);
            Assert.AreEqual(result.Item[0].Url, data.GetSection("post", 0).Get <string>("Url"));

            Assert.AreEqual(result.Item[1].Title, data.GetSection("post", 1).Get <string>("Title"));
            Assert.AreEqual(result.Item[1].StartDate.Date, DateTime.Today.AddDays(1).Date);
            Assert.AreEqual(result.Item[1].StartTime, new TimeSpan(11, 30, 0));
            Assert.AreEqual(result.Item[1].IsFree, false);
            Assert.AreEqual(result.Item[1].MaxSeats, data.GetSection("post", 1).Get <int>("MaxSeats"));
            Assert.AreEqual(result.Item[1].Cost, data.GetSection("post", 1).Get <double>("Cost"));
            Assert.AreEqual(result.Item[1].Url, data.GetSection("post", 1).Get <string>("Url"));
        }
        public void CanMapFromCsv()
        {
            var    csv        = LoadDataCsv();
            var    io         = new ImportExportService <Conference>();
            CsvDoc data       = new CsvDoc(csv, false);
            var    boolresult = io.LoadText(csv, "csv");
            var    result     = boolresult.Item;

            Assert.AreEqual(result[0].Title, data.Get <string>(0, "Title"));
            Assert.AreEqual(result[0].StartDate.Date, DateTime.Today.Date);
            Assert.AreEqual(result[0].StartTime, new TimeSpan(21, 30, 0));
            Assert.AreEqual(result[0].IsFree, true);
            Assert.AreEqual(result[0].MaxSeats, data.Get <int>(0, "MaxSeats"));
            Assert.AreEqual(result[0].Cost, 250);
            Assert.AreEqual(result[0].Url, data.Get <string>(0, "Url"));

            Assert.AreEqual(result[1].Title, data.Get <string>(1, "Title"));
            Assert.AreEqual(result[1].StartDate.Date, DateTime.Today.AddDays(4).Date);
            Assert.AreEqual(result[1].StartTime, new TimeSpan(11, 30, 0));
            Assert.AreEqual(result[1].IsFree, false);
            Assert.AreEqual(result[1].MaxSeats, data.Get <int>(1, "MaxSeats"));
            Assert.AreEqual(result[1].Cost, 251);
            Assert.AreEqual(result[1].Url, data.Get <string>(1, "Url"));
        }
Пример #10
0
        public async Task ImportsAssignmentQuestions()
        {
            // Arrange
            const string name      = "assignment question";
            var          fileNames = new[] { "file1", "file2" };

            var questionnaire = new Questionnaire
            {
                Revision = 1,
                Name     = name
            };
            var question1 = new AssignmentQuestion
            {
                Revision = 1,
                Text     = "AssignmentQuestion1",
                Options  = new List <AssignmentOption>
                {
                    new AssignmentOption
                    {
                        Text = "AssignOpt1"
                    },
                    new AssignmentOption
                    {
                        Text = "AssignOpt2"
                    },
                    new AssignmentOption
                    {
                        Text = "AssignOpt3"
                    }
                }
            };
            var q1Opts    = question1.Options.ToList();
            var q1Answers = (question1.Answers = new List <AssignmentAnswer>
            {
                new AssignmentAnswer
                {
                    Text = "AssignAnswer1",
                    CorrectOption = question1.Options.First()
                },
                new AssignmentAnswer
                {
                    Text = "AssignAnswer2",
                    CorrectOption = question1.Options.Skip(1).First()
                },
                new AssignmentAnswer
                {
                    Text = "AssignAnswer3",
                    CorrectOption = question1.Options.Skip(2).First()
                }
            }).ToList();
            var question2 = new AssignmentQuestion
            {
                Revision = 1,
                Text     = "AssignmentQuestion2",
                Options  = new List <AssignmentOption>
                {
                    new AssignmentOption
                    {
                        Text = "AssignOpt21"
                    },
                    new AssignmentOption
                    {
                        Text = "AssignOpt23"
                    }
                }
            };
            var q2Opts    = question2.Options.ToList();
            var q2Answers = (question2.Answers = new List <AssignmentAnswer>
            {
                new AssignmentAnswer
                {
                    Text = "AssignAnswer21",
                    CorrectOption = question2.Options.Skip(1).First()
                },
                new AssignmentAnswer
                {
                    Text = "AssignAnswer22",
                    CorrectOption = question2.Options.First()
                }
            }).ToList();
            var question3 = new AssignmentQuestion
            {
                Revision = 1,
                Text     = "AssignmentQuestion2",
                Options  = new List <AssignmentOption>
                {
                    new AssignmentOption
                    {
                        Text = "AssignOpt31"
                    },
                    new AssignmentOption
                    {
                        Text = "AssignOpt32"
                    },
                    new AssignmentOption
                    {
                        Text = "AssignOpt33"
                    }
                }
            };
            var q3Opts    = question3.Options.ToList();
            var q3Answers = (question3.Answers = new List <AssignmentAnswer>
            {
                new AssignmentAnswer
                {
                    Text = "AssignAnswer31",
                    CorrectOption = question3.Options.Skip(2).First()
                },
                new AssignmentAnswer
                {
                    Text = "AssignAnswer32",
                    CorrectOption = question3.Options.First()
                }
            }).ToList();
            var fileText1 = "0;\n" +
                            "Text;Opt1;Opt2;Opt3;;Assign1Text;Assign1Opt;Assign2Text;Assign2Opt;Assign3Text;Assign3Opt\n" +
                            $"\"{question1.Text}\";{q1Opts[0].Text};{q1Opts[1].Text};{q1Opts[2].Text};;{q1Answers[0].Text};1;{q1Answers[1].Text};2;{q1Answers[2].Text};3\n" +
                            $"\"{question2.Text}\";{q2Opts[0].Text};{q2Opts[1].Text};;;{q1Answers[0].Text};2;{q1Answers[1].Text};1;;";
            var fileText2 = "0;\n" +
                            "Text;Opt1;Opt2;Opt3;;Assign1Text;Assign1Opt;Assign2Text;Assign2Opt;Assign3Text;Assign3Opt\n" +
                            $"{question3.Text};{q3Opts[0].Text};{q3Opts[1].Text};{q3Opts[2].Text};;{q3Answers[0].Text};3;{q3Answers[1].Text};1;;;\n" +
                            $"";

            var expectedImportedQuestions = new Dictionary <string, List <string> >
            {
                [fileNames[0]] = new List <string>
                {
                    question1.Text,
                    question2.Text
                },
                [fileNames[1]] = new List <string>
                {
                    question3.Text
                }
            };

            var questionsUow      = A.Fake <IQuestionsUnitOfWork>();
            var questionnairesUow = A.Fake <IQuestionnairesUnitOfWork>();
            var file = A.Fake <IFile>();

            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[0])))
            .Returns(fileText1);
            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[1])))
            .Returns(fileText2);

            var testee = new ImportExportService(questionnairesUow, questionsUow, file);

            // Act
            (Dictionary <string, List <string> > importedQuestions, List <string> erroredFiles) = await testee.Import(name, "", fileNames);

            // Assert
            importedQuestions.Should().BeEquivalentTo(expectedImportedQuestions);
            erroredFiles.Should().BeNullOrEmpty();

            A.CallTo(() => questionnairesUow.QuestionnairesRepo.Add(A <Questionnaire> .That.Matches(_ => this.matchEntity(_, questionnaire))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.AssignmentQuestionsRepo.Add(A <AssignmentQuestion> .That.Matches(_ => this.matchEntity(_, question1))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.AssignmentQuestionsRepo.Add(A <AssignmentQuestion> .That.Matches(_ => this.matchEntity(_, question2))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.AssignmentQuestionsRepo.Add(A <AssignmentQuestion> .That.Matches(_ => this.matchEntity(_, question3))))
            .MustHaveHappened();

            A.CallTo(() => questionnairesUow.Complete())
            .MustHaveHappened();
            A.CallTo(() => questionsUow.Complete())
            .MustHaveHappened(Repeated.Exactly.Times(4));
        }
Пример #11
0
        public async Task ImportsTextQuestions()
        {
            // Arrange
            const string name      = "text question";
            var          fileNames = new[] { "file1", "file2" };

            var questionnaire = new Questionnaire
            {
                Revision = 1,
                Name     = name
            };
            var question1 = new TextQuestion
            {
                Revision = 1,
                Text     = "TextQuestion1",
                Answer   = new TextAnswer
                {
                    Text = "TextAnswer1"
                }
            };
            var question2 = new TextQuestion
            {
                Revision = 1,
                Text     = "TextQuestion2",
                Answer   = new TextAnswer
                {
                    Text = "TextAnswer2"
                }
            };
            var question3 = new TextQuestion
            {
                Revision = 1,
                Text     = "TextQuestion3",
                Answer   = new TextAnswer
                {
                    Text = "TextAnswer3"
                }
            };
            var fileText1 = "2;\n" +
                            "Text;Antwort\n" +
                            $"\"{question1.Text}\";{question1.Answer.Text}\n" +
                            $"{question2.Text};{question2.Answer.Text}\n" +
                            $"{question3.Text};\"{question3.Answer.Text}\"";
            var question4 = new TextQuestion
            {
                Revision = 1,
                Text     = "TextQuestion4",
                Answer   = new TextAnswer
                {
                    Text = "TextAnswer4"
                }
            };
            var fileText2 = "2\n" +
                            "Text;Antwort\n" +
                            $"{question4.Text};{question4.Answer.Text}\n";

            var expectedImportedQuestions = new Dictionary <string, List <string> >
            {
                [fileNames[0]] = new List <string>
                {
                    question1.Text,
                    question2.Text,
                    question3.Text
                },
                [fileNames[1]] = new List <string>
                {
                    question4.Text
                }
            };

            var questionsUow      = A.Fake <IQuestionsUnitOfWork>();
            var questionnairesUow = A.Fake <IQuestionnairesUnitOfWork>();
            var file = A.Fake <IFile>();

            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[0])))
            .Returns(fileText1);
            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[1])))
            .Returns(fileText2);

            var testee = new ImportExportService(questionnairesUow, questionsUow, file);

            // Act
            (Dictionary <string, List <string> > importedQuestions, List <string> erroredFiles) = await testee.Import(name, "", fileNames);

            // Assert
            importedQuestions.Should().BeEquivalentTo(expectedImportedQuestions);
            erroredFiles.Should().BeNullOrEmpty();

            A.CallTo(() => questionnairesUow.QuestionnairesRepo.Add(A <Questionnaire> .That.Matches(_ => this.matchEntity(_, questionnaire))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.TextQuestionsRepo.Add(A <TextQuestion> .That.Matches(_ => this.matchEntity(_, question1))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.TextQuestionsRepo.Add(A <TextQuestion> .That.Matches(_ => this.matchEntity(_, question2))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.TextQuestionsRepo.Add(A <TextQuestion> .That.Matches(_ => this.matchEntity(_, question3))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.TextQuestionsRepo.Add(A <TextQuestion> .That.Matches(_ => this.matchEntity(_, question4))))
            .MustHaveHappened();

            A.CallTo(() => questionnairesUow.Complete())
            .MustHaveHappened();
            A.CallTo(() => questionsUow.Complete())
            .MustHaveHappened(Repeated.Exactly.Times(5));
        }
Пример #12
0
        public void ImportProjectServiceWithMigrationTest()
        {
            SampleData.ClearDatabaseThenImportDefaultProject();

            var importData = PrepareImport();

            var service = new ImportExportService();

            var mre = new System.Threading.ManualResetEvent(false);

            KProcess.Ksmed.Business.Dtos.Export.ProjectImport projectImport = null;
            Exception e = null;

            int newProjectId = -1;

            service.PredictMergedReferentialsProject(importData, pi =>
            {
                projectImport = pi;

                service.ImportProject(pi, false, TestContext.DeploymentDirectory, p =>
                {
                    newProjectId = p.ProjectId;
                    mre.Set();
                }, ex =>
                {
                    e = ex;
                    mre.Set();
                });
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);
            Assert.IsNotNull(projectImport);

            Assert.IsTrue(projectImport.ExportedProject.Project.Label.EndsWith(" migré"));

            // Récupérer le projet depuis la base et tester
            var prepareService = new PrepareService();

            mre.Reset();
            ProjectsData data = null;

            prepareService.GetProjects(d =>
            {
                data = d;
                mre.Set();
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);

            var project = data.Projects.First(p => p.ProjectId == newProjectId);

            Assert.IsTrue(project.Label.EndsWith(" migré"));
        }
Пример #13
0
 public ItemController()
 {
     _importExportService = new ExcelImportExportService();
 }
Пример #14
0
        /// <summary>
        /// Exporte le projet spécifié.
        /// </summary>
        /// <param name="projectId">L'identifiant du projet.</param>
        private void ExportProject(int projectId, bool merge)
        {
            var service = new ImportExportService();

            string fileName = string.Format("out{0}.xml", fileNumber++);

            KProcess.Ksmed.Business.Dtos.Export.ProjectExport oldProjectExport;
            using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext())
            {
                oldProjectExport = service.CreateProjectExport(context, projectId);
            }

            var       mre    = new System.Threading.ManualResetEvent(false);
            Stream    stream = null;
            Exception e      = null;

            service.ExportProject(projectId, d =>
            {
                stream = d;
                mre.Set();
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);
            Assert.IsNotNull(stream);

            using (var reader = new StreamReader(stream))
            {
                string xml = reader.ReadToEnd();
                File.WriteAllText(fileName, xml);

                Assert.IsNotNull(xml);
            }
            stream.Close();

            Initialization.SetCurrentUser("paula");

            // Ouvrir le fichier
            mre.Reset();
            int newProjectId = -1;

            service.PredictMergedReferentialsProject(File.ReadAllBytes(fileName), pi =>
            {
                service.ImportProject(pi, merge, TestContext.DeploymentDirectory, p =>
                {
                    newProjectId = p.ProjectId;
                    mre.Set();
                }, ex =>
                {
                    e = ex;
                    mre.Set();
                });
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);

            // Réexporter le projet
            KProcess.Ksmed.Business.Dtos.Export.ProjectExport newProjectExport;
            using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext())
            {
                newProjectExport = service.CreateProjectExport(context, newProjectId);
            }

            // Comparer les valeurs

            // Projet
            AssertProject(oldProjectExport.Project, newProjectExport.Project);

            // Vidéos
            var oldVideos = oldProjectExport.Project.Videos.OrderBy(v => v.Name).ToArray();
            var newVideos = newProjectExport.Project.Videos.OrderBy(v => v.Name).ToArray();

            for (int i = 0; i < oldVideos.Length; i++)
            {
                AssertVideo(oldVideos[i], newVideos[i]);
            }

            // Scénarios
            var oldScenarios = oldProjectExport.Project.Scenarios.OrderBy(s => s.Label).ToArray();
            var newScenarios = newProjectExport.Project.Scenarios.OrderBy(s => s.Label).ToArray();

            for (int i = 0; i < oldProjectExport.Project.Scenarios.Count; i++)
            {
                var oldScenario = oldScenarios[i];
                var newScenario = newScenarios[i];

                AssertScenario(oldScenario, newScenario);

                var oldActions = oldScenario.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray();
                var newActions = newScenario.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray();

                // Actions
                for (int j = 0; j < oldScenario.Actions.Count; j++)
                {
                    var oldAction = oldActions[j];
                    var newAction = newActions[j];

                    AssertAction(oldAction, newAction);

                    // Actions réduites
                    AssertActionReduced(oldAction.Reduced, newAction.Reduced);
                }
            }
        }
Пример #15
0
        public async Task ImportsSimpleQuestions()
        {
            // Arrange
            const string name      = "name";
            const string tags      = "tags,tags";
            var          fileNames = new[] { "file1" };

            var questionnaire = new Questionnaire
            {
                Revision = 1,
                Name     = name,
                Tags     = tags
            };
            var question1 = new SimpleQuestion
            {
                Revision           = 1,
                SimpleQuestionType = SimpleQuestionType.SingleChoice,
                Text    = "Text1",
                Answers = new List <SimpleAnswer>
                {
                    new SimpleAnswer
                    {
                        IsCorrect = true,
                        Text      = "Answer1.1"
                    },
                    new SimpleAnswer
                    {
                        IsCorrect = false,
                        Text      = "Answer1.2"
                    }
                }
            };
            var answers1  = question1.Answers.ToList();
            var question2 = new SimpleQuestion
            {
                Revision           = 1,
                SimpleQuestionType = SimpleQuestionType.TrueFalse,
                Text    = "Text2",
                Answers = new List <SimpleAnswer>
                {
                    new SimpleAnswer
                    {
                        IsCorrect = false,
                        Text      = "Answer2.1"
                    },
                    new SimpleAnswer
                    {
                        IsCorrect = true,
                        Text      = "Answer2.2"
                    },
                    new SimpleAnswer
                    {
                        IsCorrect = true,
                        Text      = "Answer2.3"
                    }
                }
            };
            var answers2 = question2.Answers.ToList();
            var fileText = "1;;;;;;;\n" +
                           "Text;Typ;Text Antwort 1;Anwort korrekt?;Text Antwort 2;;;\n" +
                           $"\"{question1.Text}\";{(int)question1.SimpleQuestionType};{answers1[0].Text};{answers1[0].IsCorrect};{answers1[1].Text};{answers1[1].IsCorrect};;\r\n" +
                           $"{question2.Text};{(int)question2.SimpleQuestionType};\"{answers2[0].Text}\";{answers2[0].IsCorrect};{answers2[1].Text};{answers2[1].IsCorrect};{answers2[2].Text};{answers2[2].IsCorrect}\n";

            var expectedImportedQuestions = new Dictionary <string, List <string> >
            {
                [fileNames[0]] = new List <string>
                {
                    question1.Text,
                    question2.Text
                }
            };

            var questionsUow      = A.Fake <IQuestionsUnitOfWork>();
            var questionnairesUow = A.Fake <IQuestionnairesUnitOfWork>();
            var file = A.Fake <IFile>();

            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[0])))
            .Returns(fileText);

            var testee = new ImportExportService(questionnairesUow, questionsUow, file);

            // Act
            (Dictionary <string, List <string> > importedQuestions, List <string> erroredFiles) = await testee.Import(name, tags, fileNames);

            // Assert
            importedQuestions.Should().BeEquivalentTo(expectedImportedQuestions);
            erroredFiles.Should().BeNullOrEmpty();

            A.CallTo(() => questionnairesUow.QuestionnairesRepo.Add(A <Questionnaire> .That.Matches(_ => this.matchEntity(_, questionnaire))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.SimpleQuestionsRepo.Add(A <SimpleQuestion> .That.Matches(_ => this.matchEntity(_, question1))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.SimpleQuestionsRepo.Add(A <SimpleQuestion> .That.Matches(_ => this.matchEntity(_, question2))))
            .MustHaveHappened();

            A.CallTo(() => questionnairesUow.Complete())
            .MustHaveHappened();
            A.CallTo(() => questionsUow.Complete())
            .MustHaveHappened(Repeated.Exactly.Times(3));
        }
Пример #16
0
        public async Task ImportsTextQuestions_WhenOneFileIsNotFound()
        {
            // Arrange
            const string name      = "text question";
            var          fileNames = new[] { "file1", "invalidFile" };

            var questionnaire = new Questionnaire
            {
                Revision = 1,
                Name     = name
            };

            var question1 = new TextQuestion
            {
                Revision = 1,
                Text     = "TextQuestion1",
                Answer   = new TextAnswer
                {
                    Text = "TextAnswer1"
                }
            };
            var fileText1 = "2\n" +
                            "Text;Antwort\n" +
                            $"{question1.Text};{question1.Answer.Text}\n";

            var questionsUow      = A.Fake <IQuestionsUnitOfWork>();
            var questionnairesUow = A.Fake <IQuestionnairesUnitOfWork>();
            var file = A.Fake <IFile>();

            var expectedImportedQuestions = new Dictionary <string, List <string> >
            {
                [fileNames[0]] = new List <string>
                {
                    question1.Text
                }
            };

            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[0])))
            .Returns(fileText1);
            A.CallTo(() => file.ReadAllText(A <string> .That.Matches(_ => _ == fileNames[1])))
            .Throws(() => new FileNotFoundException());

            var testee = new ImportExportService(questionnairesUow, questionsUow, file);

            // Act
            (Dictionary <string, List <string> > importedQuestions, List <string> erroredFiles) = await testee.Import(name, "", fileNames);

            // Assert
            importedQuestions.Should().BeEquivalentTo(expectedImportedQuestions);
            erroredFiles.Should().BeEquivalentTo(fileNames[1]);

            A.CallTo(() => questionnairesUow.QuestionnairesRepo.Add(A <Questionnaire> .That.Matches(_ => this.matchEntity(_, questionnaire))))
            .MustHaveHappened();
            A.CallTo(() => questionsUow.TextQuestionsRepo.Add(A <TextQuestion> .That.Matches(_ => this.matchEntity(_, question1))))
            .MustHaveHappened();

            A.CallTo(() => questionnairesUow.Complete())
            .MustHaveHappened();
            A.CallTo(() => questionsUow.Complete())
            .MustHaveHappened(Repeated.Exactly.Twice);
        }
Пример #17
0
 public CategoryController()
 {
     _importExportService = new ExcelImportExportService();
 }
Пример #18
0
 public OrderController()
 {
     _importExportService = new ExcelImportExportService();
 }
Пример #19
0
 public PropertyController()
 {
     _importExportService = new ExcelImportExportService();
 }
Пример #20
0
        /// <summary>
        /// Exporte le projet spécifié.
        /// </summary>
        private void ExportVideoDecomposition(int projectId, int scenarioId, int videoId, int targetProjectId, bool merge)
        {
            var service = new ImportExportService();

            string fileName = string.Format("out{0}.xml", fileNumber++);

            KProcess.Ksmed.Business.Dtos.Export.VideoDecompositionExport oldVideoExport;
            using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext())
            {
                oldVideoExport = new VideoDecompositionExporter(context, projectId, scenarioId, videoId).CreateExport();
            }

            var       mre    = new System.Threading.ManualResetEvent(false);
            Stream    stream = null;
            Exception e      = null;

            service.ExportVideoDecomposition(projectId, scenarioId, videoId, d =>
            {
                stream = d;
                mre.Set();
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);
            Assert.IsNotNull(stream);

            using (var reader = new StreamReader(stream))
            {
                string xml = reader.ReadToEnd();
                File.WriteAllText(fileName, xml);

                Assert.IsNotNull(xml);
            }
            stream.Close();

            Initialization.SetCurrentUser("paula");

            // Ouvrir le fichier
            mre.Reset();
            service.PredictMergedReferentialsVideoDecomposition(targetProjectId, File.OpenRead(fileName), vdi =>
            {
                service.ImportVideoDecomposition(vdi, merge, TestContext.DeploymentDirectory, targetProjectId, success =>
                {
                    Assert.IsTrue(success);
                    mre.Set();
                }, ex =>
                {
                    e = ex;
                    mre.Set();
                });
            }, ex =>
            {
                e = ex;
                mre.Set();
            });

            mre.WaitOne();
            AssertExt.IsExceptionNull(e);

            // Récupérer le numéro de scénario initial du projet
            Scenario targetScenario;
            int      newVideoId;

            using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext())
            {
                targetScenario = context.Scenarios.Single(s => s.ProjectId == targetProjectId && s.StateCode == KnownScenarioStates.Draft && s.NatureCode == KnownScenarioNatures.Initial);
                var oldVideoName = context.Videos.Single(v => v.VideoId == videoId).Name;
                newVideoId = context.Videos.Where(v => v.ProjectId == targetProjectId && v.Name == oldVideoName)
                             .AsEnumerable().Last().VideoId;
            }

            //Réexporter la décompo
            KProcess.Ksmed.Business.Dtos.Export.VideoDecompositionExport newVideoExport;
            using (var context = KProcess.Ksmed.Data.ContextFactory.GetNewContext())
            {
                newVideoExport = new VideoDecompositionExporter(context, targetScenario.ProjectId, targetScenario.ScenarioId, newVideoId).CreateExport();
            }

            // Comparer les valeurs

            // Vidéo
            var oldVideo = oldVideoExport.Video;
            var newVideo = newVideoExport.Video;

            AssertVideo(oldVideo, newVideo);

            // Référentiels
            var p1RerentialsProject  = ReferentialsHelper.GetAllReferentialsProject(oldVideoExport.Actions).ToArray();
            var p1RerentialsStandard = ReferentialsHelper.GetAllReferentialsStandardUsed(oldVideoExport.Actions).ToArray();

            var p2RerentialsProject  = ReferentialsHelper.GetAllReferentialsProject(newVideoExport.Actions).ToArray();
            var p2RerentialsStandard = ReferentialsHelper.GetAllReferentialsStandardUsed(newVideoExport.Actions).ToArray();

            Assert.IsTrue(p1RerentialsProject.Length <= p2RerentialsProject.Length);
            Assert.AreEqual(p1RerentialsProject.Length + p1RerentialsStandard.Length, p2RerentialsProject.Length);
            Assert.AreEqual(0, p2RerentialsStandard.Length);

            // Vérifier que toutes les actions de l'ancien export soient également maintenant dans le projet de destination
            var oldActions = oldVideoExport.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray();
            var newActions = newVideoExport.Actions.OrderBy(a => WBSHelper.GetParts(a.WBS), new WBSHelper.WBSComparer()).ToArray();

            Assert.AreEqual(oldActions.Length, newActions.Length);

            // Actions
            for (int j = 0; j < oldActions.Length; j++)
            {
                var oldAction = oldActions[j];
                var newAction = newActions[j];

                AssertAction(oldAction, newAction);

                // Actions réduites
                AssertActionReduced(oldAction.Reduced, newAction.Reduced);
            }

            ServicesDiagnosticsDebug.CheckReferentialsState();
        }
 public SettingsPage()
 {
     InitializeComponent();
     _importExportService = new ImportExportService();
 }