Beispiel #1
0
        public void AssignSelectedMeasure(WebsiteMeasure websiteMeasure)
        {
            TopicTypeEnum?topicType;

            IsMeasureTopicsEnabled = true;

            if (websiteMeasure.OriginalMeasure is NursingHomeMeasure)
            {
                topicType = TopicTypeEnum.NursingHome;
                IsMeasureTopicsEnabled = false;
            }
            else if (websiteMeasure.OriginalMeasure is HospitalMeasure)
            {
                topicType = TopicTypeEnum.Hospital;
            }
            else
            {
                topicType = null;
            }

            TopicsCollectionView = CollectionViewSource.GetDefaultView(WebsiteDataService.GetTopicViewModels(topicType).ToObservableCollection()) as ListCollectionView;


            SelectedMeasure = GenMeasureModel(websiteMeasure);
        }
Beispiel #2
0
        private void LoadAvailableWebsitePagesFromBaseData()
        {
            var baseWebsitePages     = WebsiteDataService.GetBaseDataWebsitePages(BDWebsitePageQueryExpression);
            var baseWebsitePageZones = WebsiteDataService.GetBaseDataWebsitePageZones(_ => true);

            foreach (var bWebsitePage in baseWebsitePages)
            {
                //	Find the baseWebsitePage's WebsitePage in AvailableWebsitePages; if cannot find, add it to the AvailableWebsitePages list.
                var aWebsitePageModel = ManageViewModel.AllAvailableWebsitePages.FirstOrDefault(wpm => wpm.WebsitePageName == bWebsitePage.Name);
                if (aWebsitePageModel == null)
                {
                    aWebsitePageModel = new WebsitePageModel(new WebsitePage(bWebsitePage), false);
                    ManageViewModel.AllAvailableWebsitePages.Add(aWebsitePageModel);
                }
                else
                {
                    aWebsitePageModel.WebsitePages.AddIfUnique(new WebsitePage(bWebsitePage), (a, b) => a.Audience == b.Audience);
                }

                //	Find the WebsitePage and BaseWebsitePageZones (using Name[from above] and Audience[below])
                var aWebsitePage = aWebsitePageModel.WebsitePages.First(wp => wp.Audience == bWebsitePage.Audience);
                var bZones       = baseWebsitePageZones.Where(bZone => bZone.WebsitePageName == aWebsitePage.Name && bZone.Audience == aWebsitePage.Audience);

                //	Add BaseZones to their respective WebsitePage in AllAvailableWebsitePages.
                foreach (var bZone in bZones)
                {
                    var aZone = aWebsitePage.Zones.FirstOrDefault(z => z.Name == bZone.Name);
                    if (aZone == null)
                    {
                        aZone = new WebsitePageZone(bZone);
                        aWebsitePage.Zones.Add(aZone);
                    }
                }
            }
        }
        private async Task <WebsiteController> GetWebsiteController()
        {
            var entityMapper = await InstanceFactory.GetInstance <WebsiteManagementEntityMapper>();

            var websiteRepository = new WebsiteRepository(await GetDbContext(), entityMapper);
            var websiteValidator  = await InstanceFactory.GetInstance <WebsiteValidator>();

            var websiteDataService = new WebsiteDataService(websiteRepository, websiteValidator, new PagingValidator());

            return(new WebsiteController(websiteDataService));
        }
Beispiel #4
0
        public void Setup()
        {
            var services = new ServiceCollection();

            services.AddDbContext <WebsitesContext>(options => options.UseInMemoryDatabase(), ServiceLifetime.Singleton);
            services.AddSingleton <WebsiteDataService>();
            var serviceProvider = services.BuildServiceProvider();

            testContext = serviceProvider.GetService <WebsitesContext>();
            testContext.SeedData().GetAwaiter().GetResult();
            websiteService = new WebsiteDataService(testContext);
        }
        private void ProcessWebsitesAndDatasets()
        {
            if (CurrentWebsite == null || InstalledDatasets == null)
            {
                return;
            }

            CurrentWebsite.Datasets.Clear();

            // put the selected datasets into the website to be saved
            foreach (var ids in InstalledDatasets)
            {
                foreach (var wds in ids.WebsiteDatasets)
                {
                    //if ((wds.DataSetFile.Dataset != null && CurrentWebsite.Datasets.All(d => d.Dataset.Id != wds.DataSetFile.Dataset.Id)
                    // this is the simple object I think we SHOULD save for each website dataset...
                    //var dataSetFile = new DataSetFile(wds.DataSetFile.DatasetId, wds.DataSetFile.Name, wds.DataSetFile.Year, wds.DataSetFile.Quarter);

                    //if(CurrentWebsite.Datasets.All(ds => ds.Dataset.Id == ))
                    // BUT this is what the current infrastructure requires...
                    //var import = new DatasetImport {DatasetId = wds.DataSetFile.DatasetId};
                    //import.DatasetType = new TARGET() ?????????????????
                    //import.ImportDate = IMPORT DATE ???????????????
                    var websiteDataset = new WebsiteDataset();

                    if (wds.DataSetFile.Dataset != null)
                    {
                        websiteDataset.Dataset = wds.DataSetFile.Dataset;
                    }
                    else if (wds.DataSetFile.DatasetId > 0)
                    {
                        WebsiteDataService.GetEntityById <Dataset>(wds.DataSetFile.DatasetId, (record, exception) =>
                        {
                            if (exception == null && record != null)
                            {
                                websiteDataset.Dataset = record;
                            }
                        });
                    }

                    if (websiteDataset.Dataset != null &&
                        CurrentWebsite.Datasets.All(d => d.Dataset.Id != websiteDataset.Dataset.Id))
                    {
                        CurrentWebsite.Datasets.Add(websiteDataset);
                    }
                }
            }

            RaisePropertyChanged(() => CurrentWebsite.Datasets);
            RaisePropertyChanged(() => ManageViewModel.WebsiteViewModel.Website.Datasets);
        }
Beispiel #6
0
        void FillCombos(bool refresh = false)
        {
            if (!refresh)
            {
                Audiences = WebsiteDataService.Audiences.Select(o => new SelectListItem {
                    Value = ((Audience)o.Value).ToString(), Text = o.Name, Model = o
                }).ToObservableCollection();
                Audiences.RemoveAt(0);
                Audiences.Insert(0, new SelectListItem {
                    Value = Audience.None.ToString(), Text = DEFAULT_AUDIENCE_SELECT_TEXT, Model = null
                });

                Years = BaseDataService.ReportingYears.Select(o => new SelectListItem {
                    Value = o, Text = o, Model = o
                }).ToObservableCollection();
                Years.RemoveAt(0);
                Years.Insert(0, new SelectListItem {
                    Value = string.Empty, Text = DEFAULT_YEAR_SELECT_TEXT, Model = null
                });

                Quarters = BaseDataService.ReportingQuarters.Select(o => new SelectListItem {
                    Value = o.Id, Text = o.Text, Model = o
                }).ToObservableCollection();
                Quarters.RemoveAt(0);
                Quarters.Insert(0, new SelectListItem {
                    Value = -1, Text = DEFAULT_QUARTER_SELECT_TEXT, Model = null
                });

                RegionContextItems = new ObservableCollection <SelectListItem>();
                // RegionContextItems.Insert( 0, new SelectListItem { Text= "Please Select Region", Value = null, Model = null } );
                RegionContextItems.Add(new SelectListItem {
                    Text = Inflector.Titleize(typeof(HospitalServiceArea).Name), Value = typeof(HospitalServiceArea).Name, Model = null
                });
                RegionContextItems.Add(new SelectListItem {
                    Text = Inflector.Titleize(typeof(HealthReferralRegion).Name), Value = typeof(HealthReferralRegion).Name, Model = null
                });
                RegionContextItems.Add(new SelectListItem {
                    Text = Inflector.Titleize(typeof(CustomRegion).Name), Value = typeof(CustomRegion).Name, Model = null
                });
            }

            StateContextItems = new ObservableCollection <SelectListItem>();
            // StateContextItems.Insert(0, new SelectListItem { Text = "Please Select State(s)", Value = null, Model = null });

            StateContextItems = WebsiteDataService.GetStates().ToObservableCollection();
            // else
            //    StateContextItems =
            //        WebsiteDataService.GetApplicableReportingStates(
            //            ManageViewModel.WebsiteViewModel.Website.StateContext.ToArray()).ToObservableCollection();
        }
        /// <summary>
        /// Executes the delete command.
        /// </summary>
        /// <param name="vm">The vm.</param>
        private void ExecuteDeleteCommand(WebsiteViewModel vm)
        {
            if (MessageBox.Show(
                    string.Format("Are you sure you want to delete this website: {0}", vm.Website.Name),
                    "Delete Website?", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
            {
                return;
            }

            if (!WebsiteDataService.DeleteWebsite(vm.Website))
            {
                // publish so the WebsiteCollectionView will refresh without this web
                Events.GetEvent <WebsiteDeletedEvent>().Publish(vm);
            }
        }
Beispiel #8
0
        public override void Save()
        {
            // TODO: change this to preferred validation model. These string messages are per the I-4 spec.

            if (!ValidateAllRequiredFields())
            {
                return;
            }

            UpdateModelFromProperties();

            CurrentWebsite.ActivityLog.Add(new ActivityLogEntry("Details created and/or updated", DateTime.Now));

            bool   saveErrorsOccurred;
            string eventMessage;

            if (!CurrentWebsite.IsPersisted) // If the website is not persisted, then add new, otherwise, update
            {
                // Add New
                saveErrorsOccurred = WebsiteDataService.SaveNewWebsite(ManageViewModel.WebsiteViewModel.Website);
                eventMessage       = String.Format("Website {0} has been added", CurrentWebsite.Name);
            }
            else
            {
                // Update
                //// If the website is edited, the current status must change in order to allow for the dependency check to be readily available when publishing
                //WebsiteViewModel.Website.CurrentStatus = WebsiteState.Initialized;

                saveErrorsOccurred = WebsiteDataService.UpdateWebsite(CurrentWebsite);
                eventMessage       = String.Format("Website {0} has been updated", CurrentWebsite.Name);
            }

            if (!saveErrorsOccurred) // If no errors in saving website, then publish events
            {
                // publish events so all the associated view models will get the updated item
                EventAggregator.GetEvent <WebsiteCreatedOrUpdatedEvent>().Publish(new ExtendedEventArgs <GenericWebsiteEventArgs>(new GenericWebsiteEventArgs()
                {
                    Website = base.ManageViewModel.WebsiteViewModel, Message = eventMessage
                }));
                // EventAggregator.GetEvent<UpdateWebsiteTabContextEvent>().Publish(
                //new UpdateTabContextEventArgs()
                //{
                //    WebsiteViewModel = base.ManageViewModel.WebsiteViewModel,
                //    ExecuteViewModel = WebsiteTabViewModels.Details
                //});
            }
        }
        public override void Continue()
        {
            ProcessWebsitesAndDatasets();
            // update available website measures
            var datasetNames     = CurrentWebsite.Datasets.Select(d => d.Dataset.ContentType.Name).ToList();
            var availableMeasurs = WebsiteDataService.GetMeasureViewModels(m => m.IsOverride == false && datasetNames.Contains(m.Owner.Name)).ToList();

            CurrentWebsite.Measures = CurrentWebsite.Measures.RemoveNullValues().ToList();
            for (var i = CurrentWebsite.Measures.Count - 1; i >= 0; i--)
            {
                var item = CurrentWebsite.Measures[i];
                if (availableMeasurs.All(m => m.Measure.MeasureCode != item.ReportMeasure.MeasureCode))
                {
                    CurrentWebsite.Measures.Remove(item);
                }
            }
            foreach (var item in availableMeasurs)
            {
                if (CurrentWebsite.Measures.All(m => m.ReportMeasure.MeasureCode != item.Measure.MeasureCode))
                {
                    CurrentWebsite.Measures.Add(new WebsiteMeasure()
                    {
                        OriginalMeasure = item.Measure, OverrideMeasure = null, IsSelected = true
                    });
                }
            }

            ListExtensions.ForEach(CurrentWebsite.Measures, wm =>
            {
                if (!wm.IsPersisted && wm.ReportMeasure.Name.StartsWith("IP") &&
                    (wm.ReportMeasure.MeasureTitle.Clinical.ContainsIgnoreCase("median") ||
                     wm.ReportMeasure.MeasureTitle.Policy.ContainsIgnoreCase("median")))
                {
                    wm.IsSelected = false;
                }
            });

            //EventAggregator.GetEvent<UpdateWebsiteTabContextEvent>().Publish(new UpdateTabContextEventArgs()
            //{
            //    WebsiteViewModel = base.ManageViewModel.WebsiteViewModel,
            //    ExecuteViewModel = WebsiteTabViewModels.Datasets
            //});
        }
        public override void RefreshUIElements()
        {
            base.RefreshUIElements();

            if (SelectedReports == null || !SelectedReports.Any())
            {
                return;
            }

            foreach (var report in SelectedReports) // Refresh associated websites
            {
                if (report.Websites == null)
                {
                    report.Websites = new ObservableCollection <string>();
                }

                report.Websites = WebsiteDataService.GetWebsiteNamesForReport(report.Report.Id).ToObservableCollection();
            }
        }
        // clear WebsiteViewModel.Website.Datasets; populate it from the OC of selected datasets; save it
        public override void Save()
        {
            string message;
            bool   errorsOccurredWhenSaving;

            ProcessWebsitesAndDatasets();

            if (CurrentWebsite.Datasets != null && CurrentWebsite.Datasets.Any())
            {
                //WebsiteViewModel.Website.CurrentStatus = WebsiteState.HasDatasources;
                base.ManageViewModel.WebsiteViewModel.Website.ActivityLog.Add(new ActivityLogEntry("Datsets selected and/or updated.", DateTime.Now));
            }
            //else
            //{
            //    WebsiteViewModel.Website.ActivityLog.Add(new ActivityLogEntry("Measures removed and/or updated.", DateTime.Now));
            //}

            if (!CurrentWebsite.IsPersisted)
            {
                errorsOccurredWhenSaving = WebsiteDataService.SaveNewWebsite(CurrentWebsite);
                message = String.Format("Website {0} has been added", CurrentWebsite.Name);
            }
            else
            {
                // If the website is edited, the current status must change in order to allow for the dependency check to be readily available when publishing
                base.ManageViewModel.WebsiteViewModel.Website.CurrentStatus = WebsiteState.Initialized;

                errorsOccurredWhenSaving = WebsiteDataService.UpdateWebsite(CurrentWebsite);
                message = String.Format("Website {0} has been updated", CurrentWebsite.Name);
            }
            // If no errors, move to the next tab
            if (!errorsOccurredWhenSaving)
            {
                EventAggregator.GetEvent <WebsiteCreatedOrUpdatedEvent>()
                .Publish(new ExtendedEventArgs <GenericWebsiteEventArgs>(new GenericWebsiteEventArgs
                {
                    Website = base.ManageViewModel.WebsiteViewModel,
                    Message = message
                }));
                //EventAggregator.GetEvent<UpdateWebsiteTabContextEvent>().Publish(new UpdateTabContextEventArgs() { WebsiteViewModel = base.ManageViewModel.WebsiteViewModel });
            }
        }
Beispiel #12
0
        /// <summary>
        /// Saves the Measure Model
        /// </summary>
        /// <param name="measureToSave"></param>
        private void SaveMeasureModel(MeasureModel measureToSave, bool isBatchLoading = false)
        {
            if (!isBatchLoading)
            {
                measureToSave.UpdateForMeasureOverride();
            }
            //measureToSave.ReconcileTopics(this, measureToSave.MeasureOverwrite);
            measureToSave.WasMeasureOverrideEdited = true;

            measureToSave.MeasureOverwrite.MeasureTitle.Selected = (measureToSave.IsPlainTitleSelected)
                                                                                                                                                                ? SelectedMeasuretitleEnum.Plain
                                                                                                                                                                : SelectedMeasuretitleEnum.Clinical;
            if (!isBatchLoading)
            {
                ReverseHydrateTopics(measureToSave.MeasureOverwrite);
            }

            WebsiteDataService.SaveMeasureOverride(measureToSave.MeasureOverwrite, (result, error) =>
            {
                if (error == null)
                {
                    var msg = string.Format("Measure \"{0}\" was successfully overwritten. Please save website \"{1}\".", measureToSave.MeasureOverwrite.MeasureTitle.Clinical, base.ManageViewModel.WebsiteViewModel.Website.Name);
                    EventAggregator.GetEvent <GenericNotificationEvent>().Publish(msg);
                    if (!isBatchLoading)
                    {
                        HydrateTopics(measureToSave.MeasureOverwrite);
                    }
                    //EventAggregator.GetEvent<ForceTabSaveEvent>().Publish(true);
                    measureToSave.MeasureOverwrite = result;
                }
                else
                {
                    EventAggregator.GetEvent <ErrorNotificationEvent>().Publish(error);
                }
            });

            if (measureToSave.WebsiteMeasure != null)
            {
                measureToSave.WebsiteMeasure.OverrideMeasure = measureToSave.MeasureOverwrite;
            }
        }
        private void ExecuteExportCommand(WebsiteViewModel vm)
        {
            try
            {
                if (vm == null)
                {
                    return;
                }
                //if (WebsiteDataService == null)
                //Events.GetEvent<ErrorNotificationEvent>().Publish();

                base.Logger.Information($"Exporting configuration for website \"{vm.DisplayName}\"");
                Website websiteToExport = null;
                using (ApplicationCursor.SetCursor(Cursors.Wait))
                {
                    WebsiteDataService.GetEntityById <Website>(vm.Website.Id, (website, exception) =>
                    {
                        if (exception == null)
                        {
                            websiteToExport = website;
                        }
                        else
                        {
                            Events.GetEvent <ErrorNotificationEvent>().Publish(exception);
                        }
                    });

                    if (websiteToExport == null)
                    {
                        return;
                    }

                    WebsiteExporter.Export(websiteToExport);
                }
            }
            catch (Exception exc)
            {
                Events.GetEvent <ErrorNotificationEvent>().Publish(exc);
            }
        }
        public override void Save()
        {
            UpdateVmWithSelectedReports();

            string message;
            bool   errorsOccurredWhenSaving;

            if (!ManageViewModel.WebsiteViewModel.Website.IsPersisted)
            {
                errorsOccurredWhenSaving = WebsiteDataService.SaveNewWebsite(ManageViewModel.WebsiteViewModel.Website);
                message = string.Format("Website {0} has been added", ManageViewModel.WebsiteViewModel.Website.Name);
            }
            else
            {
                // If the website is edited, the current status must change in order to allow for the dependency check to be readily available when publishing
                ManageViewModel.WebsiteViewModel.Website.CurrentStatus = WebsiteState.Initialized;

                errorsOccurredWhenSaving = WebsiteDataService.UpdateWebsite(ManageViewModel.WebsiteViewModel.Website);
                message = string.Format("Website {0} has been updated", ManageViewModel.WebsiteViewModel.Website.Name);
            }
            // If no errors, move to the next tab
            if (!errorsOccurredWhenSaving)
            {
                RefreshUIElements();
                var eventArgs = new ExtendedEventArgs <GenericWebsiteEventArgs>
                {
                    Data = new GenericWebsiteEventArgs {
                        Website = ManageViewModel.WebsiteViewModel, Message = message
                    }
                };

                EventAggregator.GetEvent <WebsiteCreatedOrUpdatedEvent>().Publish(eventArgs);
                //EventAggregator.GetEvent<UpdateWebsiteTabContextEvent>().Publish(
                //    new UpdateTabContextEventArgs
                //    {
                //        WebsiteViewModel = base.ManageViewModel.WebsiteViewModel,
                //        ExecuteViewModel = WebsiteTabViewModels.Reports
                //    });
            }
        }
        /// <summary>
        /// Saves the complete Website object to DB.
        /// </summary>
        public override void Save()
        {
            string message = string.Empty;

            if (!WebsiteDataService.SaveOrUpdateWebsite(CurrentWebsite))
            {
                message = CurrentWebsite.IsPersisted
                                                                ? String.Format("Website {0} has been updated", CurrentWebsite.Name)
                                                                : String.Format("Website {0} has been added", CurrentWebsite.Name);
            }

            if (!string.IsNullOrEmpty(message))
            {
                var eventArgs = new ExtendedEventArgs <GenericWebsiteEventArgs>
                {
                    Data = new GenericWebsiteEventArgs {
                        Website = ManageViewModel.WebsiteViewModel, Message = message
                    }
                };

                EventAggregator.GetEvent <WebsiteCreatedOrUpdatedEvent>().Publish(eventArgs);
            }
        }
        private void LoadData()
        {
            //var baseData = ServiceLocator.Current.GetInstance<IBaseDataService>();
            //var quarters = baseData.ReportingQuarters.Where(data => data.Id != null);
            if (WebsiteViewModels != null)
            {
                WebsiteViewModels.Clear();
            }

            SortEnumeration = new ObservableCollection <string>
            {
                _websiteDisplayName,
                _WebSiteReportedPeriod,
                _WebsiteTargetAudience,
                _WebsiteStatusInProgress,
                _WebsitestatusComplete
            };

            WebsiteViewModels = WebsiteDataService.GetAllWebsites();
            WebsitesCVS       = new CollectionViewSource {
                Source = WebsiteViewModels
            };
            WebsiteCount = WebsiteViewModels.Count;
        }
        ///// <summary>
        ///// Determines whether this instance can execute.
        ///// </summary>
        ///// <returns></returns>
        //private bool CanExecute()
        //{
        //    return true;
        //}

        ///// <summary>
        ///// Executes the import command.
        ///// </summary>
        //private void ExecuteImportCommand()
        //{
        //    RegionManager.RequestNavigate(RegionNames.MainContent, new Uri(ViewNames.WebsiteImportView, UriKind.Relative));
        //}

        public void LoadData()
        {
            // For each installed dataset, for each imported file, find the matches in the selected datasets saved in the website...
            try
            {
                // could move this into the loop and pass outer.Id, but here it's a single query
                var importedDatasets = WebsiteDataService.GetDatasetSummary();

                //if (InstalledDatasets == null || !InstalledDatasets.Any())
                //{
                var datasets = WebsiteDataService.GetInstalledDatasets();

                // create an OC of datasets for binding in the view
                InstalledDatasets = datasets.Distinct().Select(target => new InstalledDataset
                {
                    Id = target.Id,
                    IsTrendingEnabled      = target.IsTrendingEnabled,
                    NameOfInstalledDataset = target.Name,
                    WebsiteViewModel       = ManageViewModel.WebsiteViewModel,
                    Manager = ManageViewModel,
                    Events  = EventAggregator
                }).ToObservableCollection();
                //}

                foreach (var outer in InstalledDatasets)
                {
                    // it should return an empty ToList if there are none, but just to be safe
                    if (!importedDatasets.Any(x => x.DatasetTypeId == outer.Id))
                    {
                        var specialRow = new ImportedFile(outer.Id, false, outer.NameOfInstalledDataset, "", "", "", "", ImportedFileRowTypes.NoneImported);
                        outer.ImportedFiles.Add(specialRow);
                    }
                    else
                    {
                        var specialRow = new ImportedFile(outer.Id, false, outer.NameOfInstalledDataset, "", "", "", "", ImportedFileRowTypes.PleaseSelect);
                        outer.ImportedFiles.Add(specialRow);

                        foreach (var inner in importedDatasets.Where(x => x.DatasetTypeId == outer.Id))
                        {
                            // This imported dataset is 'unselected' if there are no datasets in the website, or if none have id == inner.DatasetTypeId
                            bool selected = ManageViewModel.WebsiteViewModel != null && CurrentWebsite != null && CurrentWebsite.Datasets != null &&
                                            CurrentWebsite.Datasets.Any(d => d.Dataset.ContentType.Id == inner.DatasetTypeId && d.Dataset.Id == inner.DatasetImport.Id);

                            var name           = string.Format("{0}: {1}", outer.NameOfInstalledDataset, inner.Name);
                            var websiteDataSet = (ManageViewModel.WebsiteViewModel != null && CurrentWebsite != null && CurrentWebsite.Datasets != null &&
                                                  CurrentWebsite.Datasets.Any(ds => ds.Dataset.Id == inner.DatasetImport.Id))
                                                    ? CurrentWebsite.Datasets.SingleOrDefault(ds => ds.Dataset.Id == inner.DatasetImport.Id)
                                                    : null;


                            var file = new ImportedFile(inner.DatasetId, selected, name,
                                                        inner.Year.ToString(), inner.Quarter,
                                                        inner.VersionMonth, inner.VersionYear,
                                                        ImportedFileRowTypes.Normal,
                                                        websiteDataSet != null ? websiteDataSet.Dataset : null);

                            // Add selected files to the website list of datasets; add unselected files to the list of "available" files
                            if (selected)
                            {
                                outer.WebsiteDatasets.Add(file);
                            }
                            else
                            {
                                outer.ImportedFiles.Add(file);
                            }
                        }
                    }

                    // select the first row
                    outer.SelectedImportedFile = outer.ImportedFiles[0];
                }
            }
            catch (Exception ex)
            {
                EventAggregator.GetEvent <ErrorNotificationEvent>().Publish(ex);
            }
        }
Beispiel #18
0
 private ObservableCollection <string> _getWebsites()
 {
     return(WebsiteDataService.GetWebsiteNamesForReport(Id).ToObservableCollection());
 }
        public IActionResult Index(InputWords words)
        {
            //10 watkow, 11s
            int threads  = 16;
            var database = new WebsiteDataService();
            var ways     = new List <List <Word_n_Sim> >();
            var begin    = DateTime.Now;
            var time     = new TimeSpan(0);

            try
            {
                int temp   = 0;
                var result = database.wordnet_go(new List <Word_n_Sim>()
                {
                    new Word_n_Sim("0", words.BeginWord)
                }, words.BeginWord, new List <List <Word_n_Sim> >()
                {
                }, ref temp, thisLock);
                result = database.wordnet_go(new List <Word_n_Sim>()
                {
                    new Word_n_Sim("0", words.EndWord)
                }, words.EndWord, new List <List <Word_n_Sim> >()
                {
                }, ref temp, thisLock);
            }
            catch (Exception)
            {
                var endtime = DateTime.Now;
                time         = endtime - begin;
                ViewBag.ways = ways;
                ViewBag.multiply_simmilarity = 0;
                ViewBag.time = time;
                return(View());
            }

            var first_search = new List <Word_n_Sim>();

            first_search.Add(new Word_n_Sim("0", words.BeginWord));
            var search_lst = new List <List <Word_n_Sim> >();

            search_lst.Add(first_search);
            int length         = int.MaxValue;
            var alrdy_searched = new Dictionary <string, int>();
            var tasklist       = new List <Task <List <List <Word_n_Sim> > > >();

            while (true)
            {
                if (tasklist.Count == 0)
                {
                    if (search_lst.Count == 0 || (search_lst.Count > 0 && search_lst.First().Count >= length))
                    {
                        //Console.WriteLine("\nPrzerywam!");
                        break;
                    }
                }

                if (tasklist.Count < threads)
                {
                    if (search_lst.Count > 0 && search_lst.First().Count < length)
                    {
                        var way = search_lst.First();
                        search_lst.Remove(way);
                        if (way.Count() < length)
                        {
                            if (alrdy_searched.ContainsKey(way.Last().Word) == false)
                            {
                                alrdy_searched.Add(way.Last().Word, way.Count);
                                var task = Task.Run(() => database.wordnet_go(way, words.EndWord, ways, ref length, thisLock));
                                tasklist.Add(task);
                            }
                            else if (alrdy_searched[way.Last().Word] >= way.Count)
                            {
                                alrdy_searched[way.Last().Word] = way.Count;
                                var task = Task.Run(() => database.wordnet_go(way, words.EndWord, ways, ref length, thisLock));
                                tasklist.Add(task);
                            }
                        }
                    }
                }
                if (tasklist.Count >= threads || search_lst.Count == 0 || (search_lst.Count > 0 && search_lst.First().Count >= length))
                {
                    //Console.WriteLine("\nCzekam na zakonczenie " + tasklist.Count + " watkow.");
                    Task.WaitAll(tasklist.ToArray());
                    foreach (var singletask in tasklist)
                    {
                        var result = singletask.Result;
                        if (result.Count > 0)
                        {
                            search_lst = search_lst.Concat(result).ToList();
                        }
                    }
                    tasklist = new List <Task <List <List <Word_n_Sim> > > >();
                }
            }

            NumberFormatInfo provider = new NumberFormatInfo();

            provider.NumberDecimalSeparator = ".";
            List <double> multiply_simmilarity = new List <double>();

            foreach (var way in ways)
            {
                double multiply = 1;
                foreach (var step in way)
                {
                    if (step.Similarity != "0")
                    {
                        multiply *= Convert.ToDouble(step.Similarity, provider);
                    }
                }
                multiply_simmilarity.Add(multiply);
            }
            var end = DateTime.Now;

            time = end - begin;
            Console.WriteLine("\n" + words.BeginWord + " -> " + words.EndWord);
            Console.WriteLine("Time: " + time.TotalSeconds);
            ViewBag.ways = ways;
            ViewBag.multiply_simmilarity = multiply_simmilarity;
            ViewBag.time = time;
            return(View());
        }