public void Redirect_to_Index_for_post_to_DataCollectionsToCsv_when_no_DataCollections()
        {
            var vm = new CsvDumpViewModel {
                DataCollections = new List <CollectionListViewModel>()
            };

            _dataCollectionRepository.GetAll().Returns(new List <DataCollection>());

            _controller.WithCallTo(c => c.AllDataCollectionsToCsv(vm)).ShouldRedirectTo(_controller.GetType().GetMethod("Index"));
        }
        public void Redirect_to_Index_for_post_to_DataManagementPlansToCsv_when_no_Projects()
        {
            var vm = new CsvDumpViewModel {
                Projects = new List <DmpListViewModel>()
            };

            _projectRepository.GetAll().Returns(new List <Project>());

            _controller.WithCallTo(c => c.AllDataManagementPlansToCsv(vm)).ShouldRedirectTo(_controller.GetType().GetMethod("Index"));
        }
        public ActionResult AllDataManagementPlansToCsv(CsvDumpViewModel model)
        {
            var projects = _projectRepository.GetAll().Where(p => p.DataManagementPlan != null).ToList();

            if (projects.Count != 0)
            {
                var dataManagementPlanTable = _csvHelper.DataManagementPlansToDataTable(projects);
                var reponse = this.ControllerContext.RequestContext.HttpContext.Response;
                reponse.AddHeader("Content-Disposition", "attachment;filename=DataManagementPlans_" + DateTime.Now.ToShortDateString() + ".csv");
                return(File(Encoding.UTF8.GetBytes(_csvHelper.ExportToCsv(dataManagementPlanTable, _appSettingsService.CsvSeparator)), "text/csv"));
            }
            return(RedirectToAction("Index"));
        }
        public void Render_CSV_file_for_post_to_DataCollectionsToCsv()
        {
            var vm = new CsvDumpViewModel {
                DataCollections = Builder <CollectionListViewModel> .CreateListOfSize(3).Build()
            };
            var dataCollections = Builder <DataCollection> .CreateListOfSize(5)
                                  .All()
                                  .Build();

            _dataCollectionRepository.GetAll().Returns(dataCollections);
            _csvHelper.ExportToCsv(Arg.Any <DataTable>()).Returns("");
            _csvHelper.DataCollectionsToDataTable(Arg.Any <IList <DataCollection> >()).Returns(new DataTable());
            _controller.WithCallTo(c => c.AllDataCollectionsToCsv(vm)).ShouldRenderFile("text/csv");

            _csvHelper.Received().ExportToCsv(Arg.Any <DataTable>(), Arg.Any <string>());
            _csvHelper.Received().DataCollectionsToDataTable(Arg.Any <IList <DataCollection> >());

            _context.HttpContext.Response.Received().AddHeader(Arg.Any <string>(), Arg.Any <string>());
        }
        public ActionResult Index()
        {
            var projects      = _projectRepository.GetAll();
            var projectModels = projects.Where(p => p.DataManagementPlan != null).Select(p =>
                                                                                         new DmpListViewModel
            {
                Id    = p.DataManagementPlan.Id,
                Title = p.Title
            }).ToList();
            var dataCollections      = _dataCollectionRepository.GetAll();
            var dataCollectionModels =
                dataCollections.Select(d => new CollectionListViewModel {
                Id = d.Id, Title = d.Title
            }).ToList();
            var model = new CsvDumpViewModel {
                Projects = projectModels, DataCollections = dataCollectionModels
            };

            return(View(model));
        }
        public void Render_DmpNotFound_view_for_post_to_Index_with_project_without_Dmp()
        {
            var vm = new CsvDumpViewModel {
                Projects = Builder <DmpListViewModel> .CreateListOfSize(3).Build()
            };

            _form["DataManagementPlanCsv"] = "Get Data Management Plan to CSV";
            _form["ProjectList"]           = "5";
            _projectRepository.GetByDataManagementPlanId(5).Returns(x => null);
            var project = SetUpFullProject("GA37493");

            project.DataManagementPlan = null;
            _csvHelper.ExportToCsv(Arg.Any <DataTable>()).Returns("");
            _csvHelper.DataManagementPlanToDataTable(Arg.Any <DataManagementPlan>(), Arg.Any <IList <ProjectParty> >()).Returns(new DataTable());

            _controller.WithCallTo(c => c.DataManagementPlanToCsv(vm)).ShouldRenderView("DmpNotFound");

            _csvHelper.DidNotReceive().ExportToCsv(Arg.Any <DataTable>(), Arg.Any <string>());
            _csvHelper.DidNotReceive().DataManagementPlanToDataTable(Arg.Any <DataManagementPlan>(), Arg.Any <IList <ProjectParty> >());
        }
        public void Render_CSV_file_for_post_to_DataManagementPlansToCsv()
        {
            var vm = new CsvDumpViewModel {
                Projects = Builder <DmpListViewModel> .CreateListOfSize(3).Build()
            };
            var projects = Builder <Project> .CreateListOfSize(5)
                           .All()
                           .With(p => p.DataManagementPlan = Builder <DataManagementPlan> .CreateNew().Build())
                           .Build();

            _projectRepository.GetAll().Returns(projects);
            _csvHelper.ExportToCsv(Arg.Any <DataTable>()).Returns("");
            _csvHelper.DataManagementPlansToDataTable(Arg.Any <IList <Project> >()).Returns(new DataTable());
            _controller.WithCallTo(c => c.AllDataManagementPlansToCsv(vm)).ShouldRenderFile("text/csv");

            _csvHelper.Received().ExportToCsv(Arg.Any <DataTable>(), Arg.Any <string>());
            _csvHelper.Received().DataManagementPlansToDataTable(Arg.Any <IList <Project> >());

            _context.HttpContext.Response.Received().AddHeader(Arg.Any <string>(), Arg.Any <string>());
        }
        public ActionResult DataManagementPlanToCsv(CsvDumpViewModel model)
        {
            var formParams = ControllerContext.HttpContext.Request.Form;
            var dmpList    = formParams["ProjectList"];
            int sourceProjectId;

            if (int.TryParse(dmpList, out sourceProjectId))
            {
                var project = _projectRepository.GetByDataManagementPlanId(sourceProjectId);
                if (project != null)
                {
                    var dataManagementPlanTable = _csvHelper.DataManagementPlanToDataTable(project.DataManagementPlan, project.Parties);
                    var reponse  = this.ControllerContext.RequestContext.HttpContext.Response;
                    var fileName = Regex.Replace(project.Title, @"\W+", "_").Trim('_');
                    reponse.AddHeader("Content-Disposition", "attachment;filename=" + fileName + "_DataManagementPlan.csv");
                    return(File(Encoding.UTF8.GetBytes(_csvHelper.ExportToCsv(dataManagementPlanTable, _appSettingsService.CsvSeparator)), "text/csv"));
                }
                return(View("DmpNotFound"));
            }
            return(RedirectToAction("Index"));
        }
        public ActionResult DataCollectionToCsv(CsvDumpViewModel model)
        {
            var formParams     = ControllerContext.HttpContext.Request.Form;
            var collectionList = formParams["DataCollectionList"];
            int collectionId;

            if (int.TryParse(collectionList, out collectionId))
            {
                var dataCollection = _dataCollectionRepository.Get(collectionId);
                if (dataCollection != null)
                {
                    var dataCollectionTable = _csvHelper.DataCollectionToDataTable(dataCollection);
                    var reponse             = this.ControllerContext.RequestContext.HttpContext.Response;
                    var fileName            = Regex.Replace(dataCollection.Title, @"\W+", "_").Trim('_');
                    reponse.AddHeader("Content-Disposition", "attachment;filename=" + fileName + "_DataCollection.csv");
                    return(File(Encoding.UTF8.GetBytes(_csvHelper.ExportToCsv(dataCollectionTable, _appSettingsService.CsvSeparator)), "text/csv"));
                }
                return(View("DataCollectionNotFound"));
            }
            return(RedirectToAction("Index"));
        }
        public void Render_CSV_file_for_post_to_DataManagementPlanToCsv()
        {
            var vm = new CsvDumpViewModel {
                Projects = Builder <DmpListViewModel> .CreateListOfSize(3).Build()
            };

            _form["DataManagementPlanCsv"] = "Get Data Management Plan to CSV";
            _form["ProjectList"]           = "1";
            var project = SetUpFullProject("GA37493");

            _projectRepository.GetByDataManagementPlanId(project.DataManagementPlan.Id).Returns(project);
            _csvHelper.ExportToCsv(Arg.Any <DataTable>()).Returns("");
            _csvHelper.DataManagementPlanToDataTable(Arg.Any <DataManagementPlan>(), Arg.Any <IList <ProjectParty> >()).Returns(new DataTable());
            _controller.WithCallTo(c => c.DataManagementPlanToCsv(vm)).ShouldRenderFile("text/csv");

            _csvHelper.Received().ExportToCsv(Arg.Any <DataTable>(), Arg.Any <string>());
            _csvHelper.Received().DataManagementPlanToDataTable(Arg.Any <DataManagementPlan>(), Arg.Any <IList <ProjectParty> >());
            const string headerValue = "attachment;filename=Feeding_habits_of_polarbears_2011_DataManagementPlan.csv";

            _context.HttpContext.Response.Received().AddHeader(Arg.Any <string>(), Arg.Is <string>(o => o == headerValue));
        }