示例#1
0
        public void crudFormatiCarta()
        {
            using (LumenEntities context = new LumenEntities()) {
                Random r = new Random();

                FormatoCarta fc = new FormatoCarta();

                fc.id          = Guid.NewGuid();
                fc.descrizione = "Test-" + r.Next(1000, 9999);
                fc.prezzo      = r.Next(1, 50);
                fc.attivo      = true;
                fc.ordinamento = (short)r.Next(1, 100);
                context.FormatiCarta.Add(fc);

                int test = context.SaveChanges();

                Assert.IsTrue(test > 0);

                var trovato = context.FormatiCarta.Any(c => c.descrizione.StartsWith("Test-"));
                Assert.IsTrue(trovato);

                FormatoCarta carta = context.FormatiCarta.First(c => c.descrizione.StartsWith("Test-"));
                Assert.IsNotNull(carta);
            }
        }
示例#2
0
        public static FormatoCarta ottieniFormatoCarta(LumenEntities dbContext, string formato)
        {
            FormatoCarta fc;

            // Provo a vedere se esiste nelle entita appena aggiunte
            fc = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added)
                 .Where(e => !e.IsRelationship)
                 .Select(e => e.Entity)
                 .OfType <FormatoCarta>()
                 .FirstOrDefault(m => m.descrizione.Equals(formato));
            if (fc == null)
            {
                fc = dbContext.FormatiCarta.FirstOrDefault <FormatoCarta>(f => f.descrizione == formato);

                if (fc == null)
                {
                    fc             = new FormatoCarta();
                    fc.id          = Guid.NewGuid();
                    fc.prezzo      = new Decimal(numeroRandom(3, 15));
                    fc.descrizione = formato;
                    dbContext.FormatiCarta.Add(fc);
                }
            }

            return(fc);
        }
        /// <summary>
        ///  istanzia un oggetto nomeCartellaRecente tipo FormatoCarta, pronto per essere utilizzato nella creazione
        ///  nomeCartellaRecente un nuovo fotografoSelezionato, in caso nell'elenco mancasse.
        /// </summary>
        private void istanziaNuovoFormatoCarta()
        {
            // Questo è d'appoggio per la creazione nomeCartellaRecente un nuovo formatoCartaSelezionato al volo
            nuovoFormatoCarta        = new FormatoCarta();
            nuovoFormatoCarta.id     = Guid.NewGuid();
            nuovoFormatoCarta.attivo = true;

            OnPropertyChanged("nuovoFormatoCarta");
        }
示例#4
0
        private ParamStampaFoto ricavaParamStampa(string grandezza)
        {
            ParamStampaFoto p = new ParamStampaFoto();

            p.nomeStampante = "doPDF 9";

            LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

            FormatoCarta formato = dbContext.FormatiCarta.FirstOrDefault(fc => fc.grandezza == grandezza);

            p.formatoCarta = formato;

            return(p);
        }
示例#5
0
        private string ricavaStampante(FormatoCarta formatoCarta)
        {
            _giornale.Warn("Come mai non è definita la stampante? Va beh, la determino io");

            StampanteAbbinata sa            = stampantiAbbinate.FirstOrDefault <StampanteAbbinata>(s => s.FormatoCarta.Equals(formatoCarta));
            String            nomeStampante = null;

            if (sa != null)
            {
                nomeStampante = sa.StampanteInstallata.NomeStampante;
            }
            else
            {
                _giornale.Warn("Non riesco a stabilire la stampante di questa carta: " + formatoCarta.descrizione + "(id=" + formatoCarta.id + ")");
            }

            return(nomeStampante);
        }
示例#6
0
        private ParamStampaFoto ricavaParamStampaFoto()
        {
            ParamStampaFoto p = new ParamStampaFoto();

            // Vediamo se esiste il formato
            // TODO : creare un nuovo attributo che identifica il formato carta come chiave naturale (per esempio A4 oppure 6x8)

            LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

            FormatoCarta formato = Utilita.ottieniFormatoCarta(dbContext, "A5");

            formato.prezzo  = 5;
            p.formatoCarta  = formato;
            p.nomeStampante = Costanti.NomeStampantePdf;

            // Qui non si deve spaccare
            Digiphoto.Lumen.Database.OrmUtil.forseAttacca <FormatoCarta>(ref formato);

            return(p);
        }
        private void eliminareFormatoCarta()
        {
            FormatoCarta dacanc = formatoCartaSelezionato;

            try {
                try {
                    OrmUtil.forseAttacca(ref dacanc);
                } catch (Exception) {
                }

                var test = UnitOfWorkScope.currentDbContext.FormatiCarta.Remove(dacanc);

                var test2 = UnitOfWorkScope.currentDbContext.SaveChanges();

                // Se tutto è andato bene, allora rimuovo l'elemento dalla collezione visuale.
                formatoCartaSelezionato = null;
                formatiCarta.Remove(dacanc);
            } catch (Exception ee) {
                UnitOfWorkScope.currentObjectContext.ObjectStateManager.ChangeObjectState(dacanc, System.Data.Entity.EntityState.Unchanged);
                throw ee;
            }
        }
示例#8
0
        public static void classInitialize(TestContext testContext)
        {
            LumenApplication.Instance.avvia();

            //
            //

            using (new UnitOfWorkScope(false)) {
                // Controllo che le condizioni per il test siano verificate (formati carta e prezzi)
                LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

                FormatoCarta frmPiccolo = dbContext.FormatiCarta.FirstOrDefault(fc => fc.grandezza == "P" && fc.prezzo == PRZ_FRM_PIC);
                if (frmPiccolo == null)
                {
                    throw new InvalidOperationException("Manca il formato carta piccolo da " + PRZ_FRM_PIC + " euro");
                }

                FormatoCarta frmMedio = dbContext.FormatiCarta.FirstOrDefault(fc => fc.grandezza == "M" && fc.prezzo == PRZ_FRM_MED);
                if (frmMedio == null)
                {
                    throw new InvalidOperationException("Manca il formato carta medio da " + PRZ_FRM_MED + " euro");
                }

                FormatoCarta frmGrande = dbContext.FormatiCarta.FirstOrDefault(fc => fc.grandezza == "G" && fc.prezzo == PRZ_FRM_BIG);
                if (frmGrande == null)
                {
                    throw new InvalidOperationException("Manca il formato carta grande da " + PRZ_FRM_BIG + " euro");
                }

                ProdottoFile prodFile = dbContext.ProdottiFile.FirstOrDefault(pf => pf.prezzo == PRZ_FRM_FILE);
                if (prodFile == null)
                {
                    throw new InvalidOperationException("Manca il prodotto file da " + PRZ_FRM_FILE + " euro");
                }
            }
        }
        /// <summary>
        /// metodo factory
        /// </summary>
        /// <param name="stampanteInstallata"></param>
        /// <param name="formatoCarta"></param>
        /// <returns></returns>
        public static StampanteAbbinata create(StampanteInstallata stampanteInstallata, FormatoCarta formatoCarta)
        {
            StampanteAbbinata stpAbbi = new StampanteAbbinata(stampanteInstallata, formatoCarta);

            stpAbbi.ratio = determinaRatio(stampanteInstallata.NomeStampante);
            return(stpAbbi);
        }
示例#10
0
        public static List <StampanteAbbinata> deserializzaList(String strStampantiAbbinate)
        {
            List <StampanteAbbinata> list = new List <StampanteAbbinata>();

            if (String.IsNullOrEmpty(strStampantiAbbinate))
            {
                return(list);
            }

            String [] righe = strStampantiAbbinate.Split(CHAR_SEP_RIGHE.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

            LumenEntities dbContext = UnitOfWorkScope.currentDbContext;

            List <String> stampantiNonTrovate = new List <String>();

            for (int i = 0; i < righe.Length; i++)
            {
                string [] campi = righe [i].Split(CHAR_SEP_COLONNE.ToCharArray());

                Guid   idFormatoCarta = new Guid(campi[0]);
                String stampante      = campi[1];

                FormatoCarta formatoCarta = dbContext.FormatiCarta.SingleOrDefault(f => f.id == idFormatoCarta);

                if (formatoCarta != null)
                {
                    IStampantiInstallateSrv stampantiInstallateSrv = LumenApplication.Instance.getServizioAvviato <IStampantiInstallateSrv>();
                    StampanteInstallata     stampanteInstallata    = stampantiInstallateSrv.getStampanteInstallataByString(stampante);
                    if (stampanteInstallata != null)
                    {
                        list.Add(create(stampanteInstallata, formatoCarta));
                    }
                    else
                    {
                        stampantiNonTrovate.Add(stampante);
                    }
                }
            }

            if (stampantiNonTrovate.Count > 0)
            {
                Messaggio msg       = new Messaggio(typeof(StampantiAbbinateUtil));
                String    stampanti = "";
                foreach (String stampante in stampantiNonTrovate)
                {
                    stampanti += stampante + "\n";
                }
                if (stampantiNonTrovate.Count == 1)
                {
                    msg.descrizione = "La stampante " + stampanti + " non è stata trovata";
                }
                else
                {
                    msg.descrizione = "Le stampanti " + stampanti + " non sono state trovate";
                }
                msg.showInStatusBar = true;
                pubblicaMessaggio(msg);
            }


            // Ordino la lista per il valore di ordinamento impostato nel database nel formato carta.

            list.Sort(StampanteAbbinata.CompareByImportanza);
            return(list);
        }
示例#11
0
        public void spaccatoIncassiFotografiTest()
        {
            using (new UnitOfWorkScope()) {
                FormatoCarta formatoCarta = UnitOfWorkScope.currentDbContext.FormatiCarta.First();

                ParamStampaFoto paramStampa = new ParamStampaFoto {
                    nomeStampante = "doPDF 9",
                    formatoCarta  = formatoCarta,
                };



                _impl.creareNuovoCarrello();

                _impl.carrello.prezzoDischetto = (decimal)27.9;

                // Carico 3 fotografi tra quelli che hanno delle foto
                var          idFotografi = UnitOfWorkScope.currentDbContext.Fotografie.Select(f => f.fotografo).Distinct().Take(3);
                Fotografo [] arrayF      = idFotografi.ToArray();
                if (idFotografi.Count() != 3)
                {
                    return;
                }

                string par1   = arrayF[0].id;
                var    fotos1 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par1).Take(2).ToList();
                string par2   = arrayF[1].id;
                var    fotos2 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par2).Take(3).ToList();
                string par3   = arrayF[2].id;
                var    fotos3 = UnitOfWorkScope.currentDbContext.Fotografie.Where(f => f.fotografo.id == par3).Take(4).ToList();

                paramStampa.numCopie = 1;
                _impl.aggiungereStampe(fotos1, paramStampa);

                paramStampa.numCopie = 2;
                _impl.aggiungereStampe(fotos2, paramStampa);

                paramStampa.numCopie = 3;
                _impl.aggiungereStampe(fotos3, paramStampa);

                _impl.aggiungereMasterizzate(fotos1);
                _impl.aggiungereMasterizzate(fotos2);
                _impl.aggiungereMasterizzate(fotos3);

                string msgEsito = _impl.salvareCarrello();
                bool   esito    = (msgEsito == null);
                Assert.IsTrue(esito);

                Carrello cc = _impl.carrello;


                decimal soldi1 = (fotos1.Count() * 1 * formatoCarta.prezzo);
                decimal soldi2 = (fotos2.Count() * 2 * formatoCarta.prezzo);
                decimal soldi3 = (fotos3.Count() * 3 * formatoCarta.prezzo);
                decimal soldi  = soldi1 + soldi2 + soldi3 + (decimal)27.9;

                // Ora faccio un pò di verifiche
                Assert.IsTrue(cc.totaleAPagare == soldi);


                // Il totale da pagare, deve essere la somma degli incassi dei fotografi
                decimal somma = cc.incassiFotografi.Sum(ii => ii.incasso);
                Assert.IsTrue(cc.totaleAPagare == somma);

                // La somma dei ...DI CUI.. deve essere uguale al totale
                decimal ima = cc.incassiFotografi.Sum(ii => ii.incassoMasterizzate);
                decimal ist = cc.incassiFotografi.Sum(ii => ii.incassoStampe);
                Assert.IsTrue(ima + ist == somma);

                Assert.IsTrue(ima == cc.prezzoDischetto);
            }
        }
示例#12
0
 public override int GetHashCode()
 {
     return(17 + 31 * FormatoCarta.GetHashCode() + 31 * StampanteInstallata.GetHashCode());
 }
示例#13
0
 /// <summary>
 /// Per costruire questa classe passare per il metodo StampantiAbbinateUtil::create
 /// </summary>
 internal StampanteAbbinata(StampanteInstallata stampanteInstallata, FormatoCarta formatoCarta)
 {
     this.StampanteInstallata = stampanteInstallata;
     this.FormatoCarta        = formatoCarta;
 }