public Carrello Applica(Carrello cin, Promozione _promo, PromoContext contestoDiVendita) { PromoStessaFotoSuFile promo = (PromoStessaFotoSuFile)_promo; bool elargito = false; // Vediamo se esiste una foto con il rispettivo file. foreach (RigaCarrello r in cin.righeCarrello) { if (r.prezzoNettoTotale > 0 && r.discriminator == RigaCarrello.TIPORIGA_STAMPA) { RigaCarrello rigaFile = cin.righeCarrello.SingleOrDefault(r2 => r2.isTipoMasterizzata && r2.fotografia == r.fotografia); if (rigaFile != null) { // trovato il file che corrisponde a questa foto. rigaFile.sconto = rigaFile.prezzoLordoUnitario - promo.prezzoFile; rigaFile.prezzoNettoTotale = GestoreCarrello.calcValoreRiga(rigaFile); elargito = true; _giornale.Debug("Elargita per foto num. " + rigaFile.fotografia.numero); } } } // Aggiungo la promo alla lista di quelle elargite if (elargito && contestoDiVendita.promoApplicate.Contains(promo) == false) { contestoDiVendita.promoApplicate.Add(promo); } return(cin); }
public void DoPromoPolimorfTest() { using (LumenEntities dbContext = new LumenEntities()) { PromoStessaFotoSuFile p1 = (PromoStessaFotoSuFile)dbContext.Promozioni.SingleOrDefault(p => p.id == 1); bool nuovo1 = (p1 == null); if (nuovo1) { p1 = new PromoStessaFotoSuFile(); } p1.id = 1; p1.descrizione = "prova1"; p1.prezzoFile = 1; if (nuovo1) { dbContext.Promozioni.Add(p1); } // PromoPrendiNPaghiM p2 = (PromoPrendiNPaghiM)dbContext.Promozioni.SingleOrDefault(p => p.id == 2); bool nuovo2 = (p2 == null); if (nuovo2) { p2 = new PromoPrendiNPaghiM(); } p2.id = 2; p2.descrizione = "prova2"; p2.qtaDaPrendere = 6; p2.qtaDaPagare = 5; if (nuovo2) { dbContext.Promozioni.Add(p2); } dbContext.SaveChanges(); } }