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; }
private void ClearCollections() { // Setting to a new collection instance as clearing the collection causes // the packaged solutions appliance list to be cleared in runtime (reference values). *Important AppliancesInOffer.Clear(); MaterialsInOffer.Clear(); SalariesInOffer.Clear(); }
/* Enables the Component, Salary, and Materials view, and prepares * the offer for receiving information about any of these */ private void OnSolutionSelected() { IsDataSaved = false; IsComponentTabVisible = true; ArePackagedSolutionsVisible = false; // Set offer's packaged solution to selected Offer.PackagedSolution = SelectedPackagedSolution; // Add appliances to appliances in this offer foreach (var appInstance in SelectedPackagedSolution.ApplianceInstances) { AppliancesInOffer.Add(new UnitPrice(appInstance.Appliance)); } UpdateSidebarValues(); NotifyCanExecuteChanged(); }
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; } }