Пример #1
0
        protected bool CheckPreconditionsForced(DataAccess Source, DataAccess Dest)
        {
            DataTable      S          = Source.RUN_SELECT(table, "*", null, filter, null, false);
            DataTable      D          = Dest.RUN_SELECT(table, "*", null, null, null, false);
            int            nmax       = CfgFn.GetNoNullInt32(Dest.DO_READ_VALUE(table, null, "max(" + key + ")")) + 1;
            StringAppender myAppender = new StringAppender(stringtoappend, maxlen);

            Hashtable    H   = new Hashtable();
            CQueryHelper QHC = new CQueryHelper();

            foreach (DataRow Rs in S.Rows)
            {
                object    newval = myAppender.translate(Rs[code].ToString());
                DataRow[] found  = D.Select(QHC.CmpEq(code, newval));
                if (found.Length == 0)
                {
                    H[Rs[key]]     = nmax++;
                    ToAdd[Rs[key]] = 1;
                    continue;
                }
                MessageBox.Show("La tabella di destinazione " + table + " ha già una o più righe con " +
                                code + " = " + newval.ToString(), "Errore");
                return(false);
            }
            MyTR = new ManualTranslator(H);
            AddPrivateTranslator(code, myAppender);
            DefinesPreTranslator(traslcode, MyTR);
            return(true);
        }
Пример #2
0
 public CopyContext Add(string translatorCode, translator TR)
 {
     if (IsDefined(translatorCode))
     {
         MessageBox.Show("Errore: doppia definizione del translator di codice " + translatorCode, "Errore di progettazione");
     }
     H[translatorCode] = TR;
     return(this);
 }
Пример #3
0
 // Use this for initialization
 void Start()
 {
     characterVars = maincharacter.GetComponent <mainCharacterVars>();
     friend1       = npc1.GetComponent <npcfriendship>(); daycount1 = npc1.GetComponent <npcGiveTask>();
     friend2       = npc2.GetComponent <npcfriendship>(); daycount2 = npc2.GetComponent <npcGiveTask>();
     friend3       = npc3.GetComponent <npcfriendship>(); daycount3 = npc3.GetComponent <npcGiveTask>();
     friend4       = npc4.GetComponent <npcfriendship>(); daycount4 = npc4.GetComponent <npcGiveTask>();
     translate     = Translator.GetComponent <translator>();
 }
Пример #4
0
 /// <summary>
 /// Chiamato in sede di costruzione della classe per stabilire quali translators siano attivati da questo oggetto
 /// </summary>
 /// <param name="code"></param>
 /// <param name="T"></param>
 /// <returns></returns>
 public Copyer DefinesPreTranslator(string code, translator T)
 {
     if (L.Contains(code))
     {
         MessageBox.Show("Errore: doppia definizione del translator di codice " + code, "Errore di progettazione");
     }
     L.Add(code);
     PRETrlist[code] = T;
     return(this);
 }
Пример #5
0
        public static float GetCost(int idOrder, translator translator)
        {
            var   entity = new sovadb001Entities0();
            var   order = GetOrder(idOrder);
            float cost = 0;
            int   i = 0; float t = 0;

            foreach (var ord in order.documentSpecializations)
            {
                t += (float)translator.prices.FirstOrDefault(r => r.IdSpecialization == ord.IdSpecialization).price1;
                i++;
            }
            cost = t / i;
            return(cost);
        }
Пример #6
0
        public static void AddTranslator(int[] idSpec, int idUser)
        {
            var        entity = new sovadb001Entities0();
            translator nt     = new translator();

            nt.countOfComplitedOrders = 0;
            nt.IdUser = idUser;
            entity.translators.Add(nt);
            entity.SaveChanges();
            double[] p = new double[idSpec.Length];
            int      x = 0;

            foreach (int i in idSpec)
            {
                price          pr = GetSpecialization(i).prices.First(t => t.IdTranslator == entity.translators.First(q => q.IdUser == idUser).IdTranslator);
                specialization s  = GetSpecialization(i);
                if (pr != null)
                {
                    p[x] = (double)(pr.price1 / s.complexity);
                }
                else
                {
                    p[x] = 0;
                }
                x++;
            }
            double sum = 0;

            for (int i = 0; i < p.Length; i++)
            {
                sum += p[i];
            }
            sum /= p.Length;
            double sum1 = 0;

            for (int i = 0; i < p.Length; i++)
            {
                if (p[i] != 0)
                {
                    p[i] -= sum;
                    p[i]  = Math.Abs(p[i]);
                    sum1 += p[i];
                }
            }
            entity.translators.First(q => q.IdUser == idUser).reputation = (int)sum1;
            entity.SaveChanges();
        }
Пример #7
0
        protected bool CheckPreconditions(DataAccess Source, DataAccess Dest, bool forced)
        {
            if (ClearDestAtStart)
            {
                MyTR = new IdentityTranslator();
                AddPrivateTranslator(key, MyTR);       //key is translated as MyTR - no matter of external requests
                DefinesPreTranslator(traslcode, MyTR); //defines external translator as requested
                return(true);
            }

            DataTable    S    = Source.RUN_SELECT(table, "*", null, filter, null, false);
            DataTable    D    = Dest.RUN_SELECT(table, "*", null, null, null, false);
            int          nmax = CfgFn.GetNoNullInt32(Dest.DO_READ_VALUE(table, null, "max(" + key + ")")) + 1;
            Hashtable    H    = new Hashtable();
            CQueryHelper QHC  = new CQueryHelper();

            foreach (DataRow Rs in S.Rows)
            {
                DataRow[] found = D.Select(QHC.CmpEq(code, Rs[code]));
                if (found.Length == 0)
                {
                    H[Rs[key]]     = nmax++;
                    ToAdd[Rs[key]] = 1;
                    continue;
                }
                if (forced)
                {
                    MessageBox.Show("La tabella di destinazione " + table + " ha già una o più righe con " + code + " = " + Rs[code].ToString(), "Errore");
                    return(false);
                }
                if (found.Length == 1)
                {
                    H[Rs[key]] = found[0][key];
                    continue;
                }
                MessageBox.Show("La tabella di destinazione " + table + " ha più righe con il campo " + code + " = " + Rs[code].ToString(), "Errore");
                return(false);
            }
            MyTR = new ManualTranslator(H);
            AddPrivateTranslator(key, MyTR);       //key is translated as MyTR - no matter of external requests
            DefinesPreTranslator(traslcode, MyTR); //defines external translator as requested
            return(true);
        }
Пример #8
0
 public Copyer AddPrivateTranslator(string code, translator TR)
 {
     myContext.Add(code, TR);
     applied = false;
     return(this);
 }
Пример #9
0
 /// <summary>
 /// Chiamato in sede di costruzione della classe per stabilire quali translators siano attivati da questo oggetto
 /// </summary>
 /// <param name="code"></param>
 /// <param name="T"></param>
 /// <returns></returns>
 public Copyer DefinesPostTranslator(string code, translator T)
 {
     L.Add(code);
     POSTTrlist[code] = T;
     return(this);
 }
Пример #10
0
        public ActionResult Create(Work workToInsert)
        {
            try
            {
                work dalSubmission = new work
                {
                    title   = workToInsert.title,
                    edition = workToInsert.edition
                };

                // insert new author here
                var    authorsFullName = workToInsert.author_name;
                var    names           = authorsFullName.Split(' ');
                string firstName       = names[0];
                string lastName        = names[1];

                if (!dbContext.authors.Any((n => n.first_name.Contains(firstName) ||
                                            n.last_name.Contains(lastName) ||
                                            n.first_name.StartsWith(firstName) ||
                                            n.last_name.StartsWith(lastName))))
                {
                    author newAuthor = new author
                    {
                        first_name = firstName,
                        last_name  = lastName
                    };
                    dbContext.authors.InsertOnSubmit(newAuthor);
                    dbContext.SubmitChanges();
                    dalSubmission.author_id = newAuthor.author_id; // author id
                }

                // insert new language
                if (!dbContext.languages.Any(l => l.language_name.Contains(workToInsert.language)))
                {
                    language newLang = new language
                    {
                        language_name = workToInsert.language
                    };
                    dbContext.languages.InsertOnSubmit(newLang);
                    dbContext.SubmitChanges();
                    dalSubmission.language_id = newLang.language_id; // language id
                }

                // insert new translator AND ORGANIZATION
                // REMEMBER TO INCLUDE ORGANIZATION ON CREATION VIEW!
                if (!dbContext.translators.Any(t => t.translator_name.Contains(workToInsert.translator_name) ||
                                               t.translator_name.StartsWith(workToInsert.translator_name)))
                {
                    if (!dbContext.organizations.Any(o => o.orginization_name.Contains(workToInsert.organization_name) ||
                                                     o.orginization_name.StartsWith(workToInsert.organization_name)))
                    {
                        string       orgAbrev = string.Join(string.Empty, workToInsert.organization_name.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s[0]));
                        organization newOrg   = new organization
                        {
                            orginization_name  = workToInsert.organization_name,
                            orginization_abrev = orgAbrev
                        };
                        dbContext.organizations.InsertOnSubmit(newOrg);
                        dbContext.SubmitChanges();

                        translator newTranslator = new translator
                        {
                            translator_name = workToInsert.translator_name,
                            organization_id = newOrg.organization_id
                        };

                        dbContext.translators.InsertOnSubmit(newTranslator);
                        dbContext.SubmitChanges();
                        dalSubmission.translator_id = newTranslator.translator_id;  // translator id
                    }
                }


                // insert user who entered
                // TODO: get current user
                var currentUserIDbyEmail = (from u in dbContext.users
                                            where u.email.Contains(workToInsert.user_entry_email)
                                            select u.user_id).FirstOrDefault();

                dalSubmission.user_entry_Id = currentUserIDbyEmail;     // user id

                // insert new metadata stuff
                metadata newMetaData = new metadata
                {
                    media_type = workToInsert.media_type,
                    doi        = workToInsert.doi,
                    isbn       = workToInsert.isbn
                };
                dbContext.metadatas.InsertOnSubmit(newMetaData);
                dbContext.SubmitChanges();
                dalSubmission.metadata_id = newMetaData.metadata_id;    // metadata id

                // insert new record into works
                dbContext.works.InsertOnSubmit(dalSubmission);
                dbContext.SubmitChanges();

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Пример #11
0
        protected bool CheckPreconditions(DataAccess Source, DataAccess Dest, bool forced)
        {
            //if (ClearDestAtStart) {
            //    MyTR = new IdentityTranslator();
            //    SetExternalCode("paridsor", "idsor");
            //    DefinesPreTranslator("idsor", MyTR);

            //    DefinesPreTranslator("idsor1", MyTR);
            //    DefinesPreTranslator("idsor2", MyTR);
            //    DefinesPreTranslator("idsor3", MyTR);

            //    DefinesPreTranslator("idsor01", MyTR);
            //    DefinesPreTranslator("idsor02", MyTR);
            //    DefinesPreTranslator("idsor03", MyTR);
            //    DefinesPreTranslator("idsor04", MyTR);
            //    DefinesPreTranslator("idsor05", MyTR);

            //    return true;
            //}


            DataTable    S   = Source.RUN_SELECT("sorting", "*", null, null, null, false);
            DataTable    Sk  = Source.RUN_SELECT("sortingkind", "*", null, null, null, false);
            DataTable    D   = Dest.RUN_SELECT("sorting", "*", null, null, null, false);
            DataTable    Dk  = Dest.RUN_SELECT("sortingkind", "*", null, null, null, false);
            CQueryHelper QHC = new CQueryHelper();

            int maxidsor = MetaData.MaxFromColumn(D, "idsor");

            maxidsor = maxidsor + 1;

            foreach (DataRow Rs in S.Rows)
            {
                //proietta Rs[idsorkind] sul db di destinazione
                object idsork = Rs["idsorkind"];
                if (Sk.Select(QHC.CmpEq("idsorkind", idsork)).Length == 0)
                {
                    MessageBox.Show("Chiave esterna idsorkind ORFANA nella tabella sorting del dipartimento di origine", "Errore");
                    return(false);
                }
            }

            bool      errors = false;
            Hashtable H      = new Hashtable();

            foreach (DataRow Rsk in Sk.Rows)
            {
                //il tipo class non va migrato se non rientra nell'elenco di elisabetta
                if (!MustTranslateCodeSorKind(Rsk["codesorkind"].ToString()))
                {
                    continue;
                }

                string filter = QHC.CmpEq("codesorkind", Rsk["codesorkind"]);
                if (Dk.Select(filter).Length == 0)
                {
                    continue; //sarà creata da zero  ...>NO sarà saltato
                    //MessageBox.Show("Non c'è coerenza per le strutture di tipo classificazione", "Errore di programmazione");
                    //return false;
                }
                object oldidsorkind = Rsk["idsorkind"];
                object newidsorkind = Dk.Select(filter)[0]["idsorkind"];

                DataRow[] RSS = S.Select(QHC.CmpEq("idsorkind", oldidsorkind), "nlevel"); //righe di origine
                DataRow[] RSD = D.Select(QHC.CmpEq("idsorkind", newidsorkind));           //righe di destinazione
                if (RSD.Length == 0)
                {
                    //Si predispone a creare le righe
                    foreach (DataRow Rs in RSS)
                    {
                        IDSorToCopy[Rs["idsor"].ToString()] = 1;
                        H[Rs["idsor"]] = maxidsor++;
                    }
                }
                else
                {
                    //Crea il lookup
                    foreach (DataRow Rs in RSS)
                    {
                        string    f     = QHC.AppAnd(QHC.CmpEq("idsorkind", newidsorkind), QHC.CmpEq("sortcode", Rs["sortcode"]));
                        DataRow[] found = D.Select(f);
                        if (found.Length == 0)
                        {
                            H[Rs["idsor"]] = maxidsor++;
                            IDSorToCopy[Rs["idsor"].ToString()] = 1;

                            /* Comment("Avviso: \r\n"+
                             *  "La classificazione "+Rsk["codesorkind"].ToString()+ " nel dipartimento di destinazione "+
                             *  " non ha la voce con codice "+Rs["sortcode"].ToString()+" quindi sarà creata.\r\n"+
                             *  ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\r\n");
                             * //errors = true;
                             */
                            continue;
                        }
                        if (found.Length == 1)
                        {
                            if (Rs["nlevel"].ToString() != found[0]["nlevel"].ToString())
                            {
                                MessageBox.Show("La classificazione " + Rsk["codesorkind"].ToString() + " nel dipartimento di destinazione " +
                                                " con codice " + Rs["sortcode"].ToString() +
                                                " appartiene ad un livello diverso rispetto al dipartimento di origine.", "Errore");
                                errors = true;
                            }

                            H[Rs["idsor"]] = found[0]["idsor"];
                            continue;
                        }
                        MessageBox.Show("La classificazione " + Rsk["codesorkind"].ToString() + " nel dipartimento di destinazione " +
                                        " ha PIU' VOCI con codice " + Rs["sortcode"].ToString(), "Errore");
                        errors = true;
                    }
                }
            }
            if (errors)
            {
                return(false);
            }

            MyTR = new ManualTranslator(H);
            SetExternalCode("paridsor", "idsor");
            DefinesPreTranslator("idsor", MyTR);

            DefinesPreTranslator("idsor1", MyTR);
            DefinesPreTranslator("idsor2", MyTR);
            DefinesPreTranslator("idsor3", MyTR);

            DefinesPreTranslator("idsor01", MyTR);
            DefinesPreTranslator("idsor02", MyTR);
            DefinesPreTranslator("idsor03", MyTR);
            DefinesPreTranslator("idsor04", MyTR);
            DefinesPreTranslator("idsor05", MyTR);

            return(true);
        }