/// <summary> /// Метод закриває программу, обовязкова передача по ref !!! Так як метод закриває існуючий контекст. /// </summary> /// <param name="db"></param> public void ExitApp(ref AssistantContext db) { db.Dispose(); Application app = Application.Current; app.Shutdown(); }
public override void LoadDataFromDatabase() { using (var ctx = new AssistantContext()) { ctx.Appliances.Include(a => a.DataSheet).ToList().ForEach(Appliances.Add); } }
private async void DropPackagedSolution(PackagedSolution packagedSolution) { using (var ctx = new AssistantContext()) { var conflictingOffersList = ctx.Offers .Where(o => o.PackagedSolution.Id == packagedSolution.Id) .Include(o => o.OfferInformation) .ToList(); if (conflictingOffersList.Any()) { var formattedOffersString = string.Join("\n", conflictingOffersList.Select(x => $"- {x.OfferInformation.Title} ({x.CreationDate})")); await _dialogCoordinator.ShowMessageAsync(this, "Fejl", $"Pakkeløsningen kan ikke slettes, da den findes i følgende tilbud:\n{formattedOffersString}"); return; } } // No conflicts, remove the packaged solution PackagedSolutions.Remove(packagedSolution); using (var ctx = new AssistantContext()) { ctx.PackagedSolutions.Attach(packagedSolution); ctx.PackagedSolutions.Remove(packagedSolution); ctx.SaveChanges(); } }
public LabelExportViewModel(PackagedSolution packaged) { using (var ctx = new AssistantContext()) { var companyInfo = ctx.CompanyInformation.FirstOrDefault(); if (companyInfo == null) { throw new CompanyInformationNotFoundException("Ingen firmaoplysninger er indtastet."); } CompNameText = companyInfo.CompanyName; } switch (packaged.EnergyLabel.Count) { case 1: SetupLabelOne(packaged.EnergyLabel[0]); break; case 2: SetupLabelTwo(packaged.EnergyLabel); break; default: return; } SolarIncluded = packaged.ApplianceInstances.Any(item => item.Appliance.Type == ApplianceTypes.SolarPanel) ? "Visible" : "Hidden"; WatertankIncluded = packaged.ApplianceInstances.Any(item => item.Appliance.Type == ApplianceTypes.Container) ? "Visible" : "Hidden"; TempControleIncluded = packaged.ApplianceInstances.Any(item => item.Appliance.Type == ApplianceTypes.TemperatureController) ? "Visible" : "Hidden"; HeaterIncluded = (packaged.EnergyLabel[0].SecondaryBoilerAFUE > 0 || packaged.EnergyLabel[0].SecondaryHeatPumpAFUE > 0) ? "Visible" : "Hidden"; }
private async void RunCreateApplianceDialog() { var customDialog = new CustomDialog(); Appliance newAppliance = new Appliance(); var dialogViewModel = new CreateApplianceDialogViewModel(newAppliance, true, closeHandler => _dialogCoordinator.HideMetroDialogAsync(this, customDialog), async completionHandler => { newAppliance = completionHandler.NewAppliance; // Save to database using (var ctx = new AssistantContext()) { newAppliance.CreationDate = DateTime.Now; ctx.Appliances.Add(newAppliance); ctx.SaveChanges(); } // Add to local list Appliances.Add(newAppliance); await _dialogCoordinator.HideMetroDialogAsync(this, customDialog); await _dialogCoordinator.ShowMessageAsync(this, "Succes", $"Komponentet {newAppliance.Name} blev gemt."); }); customDialog.Content = new CreateApplianceDialogView { DataContext = dialogViewModel }; await _dialogCoordinator.ShowMetroDialogAsync(this, customDialog); }
private async void RunEditApplianceDialog() { var customDialog = new CustomDialog(); var dialogViewModel = new CreateApplianceDialogViewModel(SelectedAppliance, false, instanceCancel => _dialogCoordinator.HideMetroDialogAsync(this, customDialog), instanceCompleted => { _dialogCoordinator.HideMetroDialogAsync(this, customDialog); FilteredCollectionView.Refresh(); AppliancesInPackagedSolutionView.Refresh(); // Update appliance changes in database using (var ctx = new AssistantContext()) { ctx.Entry(SelectedAppliance).State = EntityState.Modified; ctx.Entry(SelectedAppliance.DataSheet).State = EntityState.Modified; ctx.SaveChanges(); } }); customDialog.Content = new CreateApplianceDialogView { DataContext = dialogViewModel }; await _dialogCoordinator.ShowMetroDialogAsync(this, customDialog); }
private void SaveOfferToDatabase(Offer offer) { using (var ctx = new AssistantContext()) { ctx.PackagedSolutions.Attach(offer.PackagedSolution); offer.Appliances = AppliancesInOffer.ToList(); offer.Salaries = SalariesInOffer.ToList(); offer.Materials = MaterialsInOffer.ToList(); // Set existing unitprices to modified state foreach (var unit in offer.Appliances.Concat(offer.Salaries).Concat(offer.Materials).Where(u => u.Id != 0)) { ctx.Entry(unit).State = EntityState.Modified; } if (offer.Client.CreationDate == default(DateTime)) { offer.Client.CreationDate = DateTime.Now; } if (offer.CreationDate == default(DateTime)) { offer.CreationDate = DateTime.Now; } ctx.Entry(Offer).State = Offer.Id == 0 ? EntityState.Added : EntityState.Modified; ctx.SaveChanges(); } IsDataSaved = true; }
/// <summary> /// Drops an appliance from the database and removes it from the displayed list in the UI /// </summary> /// <param name="appliance"></param> private async void DropAppliance(Appliance appliance) { // Check if the appliance is used in any packaged solutions using (var ctx = new AssistantContext()) { var conflictingSolutions = ctx.PackagedSolutions.Include(a => a.ApplianceInstances) .Where(s => s.ApplianceInstances.Any(a => a.Appliance.Id == appliance.Id)) .ToList(); if (conflictingSolutions.Count > 0) { var formattedSolutionString = string.Join("\n", conflictingSolutions.Select(x => $"- {x.Name}")); await _dialogCoordinator.ShowMessageAsync(this, "Fejl", $"Komponentet kan ikke slettes, da det findes i følgende pakkeløsninger:\n{formattedSolutionString}"); return; } } // Remove from current solution foreach (var existingAppliance in AppliancesInPackagedSolution.Where(a => a.Appliance == appliance)) { AppliancesInPackagedSolution.Remove(existingAppliance); } // Remove from visual list of appliances Appliances.Remove(appliance); // Remove from database using (var ctx = new AssistantContext()) { ctx.Entry(appliance).State = EntityState.Deleted; ctx.SaveChanges(); } }
public void InitialDBTest() { new AssistantContext().Database.Delete(); ctx = new AssistantContext(); ctx.Offers.Add(off); ctx.SaveChanges(); Assert.IsTrue(ctx.Offers.Any(o => o.Id == off.Id)); }
public MainVM() { db = new AssistantContext(); db.Books.Load(); db.Topics.Load(); db.Sections.Load(); db.Examples.Load(); Books = db.Books.Local.ToBindingList(); }
public void LoadDataFromDatabaseTest() { new AssistantContext().Database.Delete(); ctx = new AssistantContext(); ctx.PackagedSolutions.Add(testPack); ctx.SaveChanges(); Assert.IsTrue(ctx.PackagedSolutions.Any(p => p.Id == testPack.Id)); }
public override void LoadDataFromDatabase() { using (var ctx = new AssistantContext()) { ctx.PackagedSolutions .Include(p => p.ApplianceInstances.Select(a => a.Appliance.DataSheet)) .ToList() .ForEach(PackagedSolutions.Add); } }
public void LoadDataFromDatabaseTest() { new AssistantContext().Database.Delete(); ctx = new AssistantContext(); ctx.Appliances.Add(app1); ctx.Appliances.Add(app2); ctx.SaveChanges(); model.LoadDataFromDatabase(); Assert.IsTrue(model.Appliances.Count != 0); }
public void LoadDataFromDatabase() { using (var ctx = new AssistantContext()) CompanyInformation = ctx.CompanyInformation.FirstOrDefault(); // Create new it does not exist if (CompanyInformation == null) { CompanyInformation = new CompanyInformation(); } }
/// <summary> /// Метод створює нову Book, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> public void AddBook(ref AssistantContext db) { MessageView message = new MessageView(""); if (message.ShowDialog() == true) { Book book = new Book(); book.NameBook = message.Message; db.Books.Add(book); db.SaveChanges(); } }
/// <summary> /// Save the viewed packaged solution to the database /// </summary> private void SaveCurrentPackagedSolution() { /* IMPORTANT * A packaged solution should not be saved if there exists * a solar collector without a container tied to it. */ using (var ctx = new AssistantContext()) { // Copy visible list of appliance instances to the list in the model var newApplianceInstanceList = AppliancesInPackagedSolution.ToList(); // Mark packaged solution as added if new or modified if old ctx.Entry(PackagedSolution).State = PackagedSolution.Id == 0 ? EntityState.Added : EntityState.Modified; // Mark removed appliance instances as deleted if (PackagedSolution.Id > 0) { var previousPackagedSolution = ctx.PackagedSolutions.Include(a => a.ApplianceInstances).FirstOrDefault(p => p.Id == PackagedSolution.Id); previousPackagedSolution?.ApplianceInstances.ToList().ForEach(instance => { if (newApplianceInstanceList.All(a => a.Id != instance.Id)) { ctx.Entry(instance).State = EntityState.Deleted; } }); } // Attach appliances and appliance instances to avoid duplicates foreach (var appInstance in newApplianceInstanceList) { ctx.Entry(appInstance.Appliance.DataSheet).State = EntityState.Unchanged; ctx.Entry(appInstance.Appliance).State = EntityState.Unchanged; ctx.Entry(appInstance).State = appInstance.Id == 0 ? EntityState.Added : EntityState.Unchanged; } // Set new appliance instance list PackagedSolution.ApplianceInstances = newApplianceInstanceList; // Set the creation date to now if (PackagedSolution.CreationDate == default(DateTime)) { PackagedSolution.CreationDate = DateTime.Now; } // Save database changes ctx.SaveChanges(); } // Set save state to true and notify print function of change IsDataSaved = true; PrintEnergyLabelCmd.NotifyCanExecuteChanged(); }
private void DropExistingOffer(Offer offer) { // Remove offer from local observable collection Offers.Remove(offer); // Open a database context and drop offer using (var ctx = new AssistantContext()) { ctx.Offers.Attach(offer); ctx.Offers.Remove(offer); ctx.SaveChanges(); } }
public override void LoadDataFromDatabase() { using (var ctx = new AssistantContext()) { ctx.Offers.Include(o => o.Materials) .Include(o => o.Salaries) .Include(o => o.PackagedSolution.ApplianceInstances.Select(a => a.Appliance)) .Include(o => o.OfferInformation) .Include(o => o.Client.ClientInformation) .ToList() .ForEach(Offers.Add); } }
public void LoadExistingOfferTest() { new AssistantContext().Database.Delete(); ctx = new AssistantContext(); ctx.Offers.Add(off); ctx.SaveChanges(); testModel.LoadExistingOffer(off.Id); Assert.IsTrue(DoContentsMatch(off.Appliances, testModel.Offer.Appliances)); Assert.IsTrue(DoContentsMatch(off.Materials, testModel.Offer.Materials)); Assert.IsTrue(DoContentsMatch(off.Salaries, testModel.Offer.Salaries)); }
public void Setup() { ctx = new AssistantContext(); model = new CreatePackagedSolutionViewModel(new DialogCoordinator()); app1 = new Appliance() { Name = "hej", DataSheet = new HeatingUnitDataSheet(), CreationDate = DateTime.Now }; app2 = new Appliance() { Name = "husk navn", DataSheet = new ContainerDataSheet(), CreationDate = DateTime.Now }; }
/// <summary> /// Метод видаляє виділений Section та всі звязані таблиці, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="sectionSelect"></param> public void DelSection(ref AssistantContext db, ref Section sectionSelect) { if (sectionSelect == null) { return; } Section section = sectionSelect as Section; var example = db.Examples.Where(e => e.Section.Id == section.Id); db.Examples.RemoveRange(example); db.Sections.Remove(section); db.SaveChanges(); }
/// <summary> /// Метод видаляє виділений Topic та всі звязані таблиці, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="topicSelect"></param> public void DelTopic(ref AssistantContext db, ref Topic topicSelect) { if (topicSelect == null) { return; } Topic topic = topicSelect as Topic; var example = db.Examples.Where(e => e.Section.TopicId == topic.Id); var section = db.Sections.Where(s => s.TopicId == topic.Id); db.Examples.RemoveRange(example); db.Sections.RemoveRange(section); db.Topics.Remove(topic); db.SaveChanges(); }
/// <summary> /// Метод редагує та зберігає Book, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="bookSelect"></param> public void EditBook(ref AssistantContext db, ref Book bookSelect) { if (bookSelect == null) { return; } Book book = bookSelect as Book; MessageView message = new MessageView(book.NameBook); if (message.ShowDialog() == true) { book.NameBook = message.Message; db.Entry(book).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } }
/// <summary> /// Метод редагує та зберігає Section, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="sectionSelect"></param> public void EditSection(ref AssistantContext db, ref Section sectionSelect) { if (sectionSelect == null) { return; } Section section = sectionSelect as Section; MessageView message = new MessageView(section.NameSection); if (message.ShowDialog() == true) { section.NameSection = message.Message; db.Entry(section).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } }
/// <summary> /// Метод редагує та зберігає Topic, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="topicSelect"></param> public void EditTopic(ref AssistantContext db, ref Topic topicSelect) { if (topicSelect == null) { return; } Topic topic = topicSelect as Topic; MessageView message = new MessageView(topic.NameTopic); if (message.ShowDialog() == true) { topic.NameTopic = message.Message; db.Entry(topic).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } }
/// <summary> /// Метод видаляє виділену Book та всіх хто на неї зсилається, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="bookSelect"></param> public void DelBook(ref AssistantContext db, ref Book bookSelect) { if (bookSelect == null) { return; } Book b = bookSelect as Book; var examples = db.Examples.Where(e => e.Section.Topic.BookId == b.Id); var sections = db.Sections.Where(s => s.Topic.BookId == b.Id); var topics = db.Topics.Where(t => t.BookId == b.Id); db.Examples.RemoveRange(examples); db.Sections.RemoveRange(sections); db.Topics.RemoveRange(topics); db.Books.Remove(b); db.SaveChanges(); }
/// <summary> /// Метод створює нову Topic та підвязує її до виділеної Book, обовязкова передача по ref !!! Так як метод змінює існуючий контекст. /// </summary> /// <param name="db"></param> /// <param name="bookSelect"></param> public void AddTopic(ref AssistantContext db, ref Book bookSelect) { if (bookSelect == null) { return; } Book book = bookSelect as Book; MessageView message = new MessageView(""); if (message.ShowDialog() == true) { Topic topic = new Topic(); topic.NameTopic = message.Message; topic.Book = book; db.Topics.Add(topic); db.SaveChanges(); } }
public void LoadExistingPackagedSolution(int packagedSolutionId) { using (var ctx = new AssistantContext()) { var existingPackagedSolution = ctx.PackagedSolutions.Where(p => p.Id == packagedSolutionId) .Include(s => s.ApplianceInstances.Select(i => i.Appliance.DataSheet)) .FirstOrDefault(); if (existingPackagedSolution == null) { return; } // Copy appliances foreach (var appliance in existingPackagedSolution.ApplianceInstances) { AppliancesInPackagedSolution.Add(appliance.MakeCopy()); } } }
public OfferExportViewModel(Offer offer) { OfferTitle = offer.OfferInformation.Title; ClientCompanyName = offer.Client.ClientInformation.CompanyName == null ? offer.Client.ClientInformation.CompanyName : null; ClientName = offer.Client.ClientInformation.Name; ClientStreet = offer.Client.ClientInformation.Address; ClientCity = offer.Client.ClientInformation.City + ", " + offer.Client.ClientInformation.PostalCode; CreationDate = offer.CreationDate.ToString("dd. MMMM yyyy"); Signatur = offer.OfferInformation.Signature; using (var ctx = new AssistantContext()) { var companyInfo = ctx.CompanyInformation.FirstOrDefault(); if (companyInfo == null) { return; } CompanyName = companyInfo.CompanyName; Adresse = companyInfo.Address; Email = companyInfo.Email; WebSite = companyInfo.Website; Telephone = companyInfo.Telephone; CVR = companyInfo.Cvr; } IntroText = offer.OfferInformation.Intro; OutroText = offer.OfferInformation.Outro; TotalAmountEks = offer.TotalSalesPrice; TotalSalesPriceInkl = (offer.TotalSalesPrice * 1.25); MomsAmount = TotalSalesPriceInkl - offer.TotalSalesPrice; Moms = ((offer.OfferInformation.ApplyTax) ? "inkl. moms" : "Eks. moms"); TotalSalesPrice = ((offer.OfferInformation.ApplyTax) ? TotalSalesPriceInkl : TotalAmountEks); AppliancesPrice = offer.AppliancesSalesPrice; SalariesPrice = offer.SalariesSalesPrice; MaterialsPrice = offer.MaterialsSalesPrice; }
public void LoadExistingOffer(int existingOfferId) { using (var ctx = new AssistantContext()) { var existingOffer = ctx.Offers.Where(o => o.Id == existingOfferId) .Include(o => o.Appliances) .Include(o => o.PackagedSolution) .Include(o => o.Materials) .Include(o => o.Salaries) .FirstOrDefault(); if (existingOffer == null) { return; } Offer.PackagedSolution = existingOffer.PackagedSolution; // Load appliances foreach (var appliance in existingOffer.Appliances) { AppliancesInOffer.Add(appliance); } // Load materials foreach (var material in existingOffer.Materials) { MaterialsInOffer.Add(material); } // Load salaries foreach (var salary in existingOffer.Salaries) { SalariesInOffer.Add(salary); } ArePackagedSolutionsVisible = false; IsComponentTabVisible = true; } }