Пример #1
0
 public void TrigEvent(MsgArgClass msg)
 {
     messageEvent(this, msg);
 }
Пример #2
0
            public void HandleMessage(object sender, MsgArgClass msg)
            {
                //Trigga i foreground när DB är uppdaterad!!

                // Would like to pass message to foreground task - but how?
            }
Пример #3
0
        public async Task <ActionResult> FillValues(string ADOcon, DB_Context context, int myProjectID, List <List <int> > myIDList, List <string> myTypeList, List <List <string> > myValueList)
        // Update database with filedata as a background task
        {
            await Task.Run(() =>
            {
                // Use ADO to improve performance
                SqlConnection DBcon = new SqlConnection(ADOcon);
                DBcon.Open();
                int LastRow = 0, lastPropertyIndex, lastDataIndex;

                // For each row...

                foreach (List <string> row in myValueList)
                {
                    lastPropertyIndex = 0;
                    lastDataIndex     = 0;

                    // For each column

                    int lastColumn = 0;

                    foreach (string column in row)
                    {
                        if (myTypeList[lastColumn] == "S")
                        {
                            SavePropertyValue(DBcon, context, myIDList[0][lastPropertyIndex], column, LastRow);
                            lastPropertyIndex++;
                        }
                        else if (myTypeList[lastColumn] == "N")
                        {
                            SaveDataValue(DBcon, context, myIDList[1][lastDataIndex], column, LastRow);
                            lastDataIndex++;
                        }
                        else
                        {
                        }
                        lastColumn++;
                        // RÄKNA UPP lastColumn etc...
                    }
                    LastRow++;
                }
                ProjectData myProject = new ProjectData();

                myProject.SetProjectstatus(myProjectID, "");

                // Upload to Database is completed - trig event to be able to send message to user

                MessagePublisher myMessagePublisher   = new MessagePublisher();
                MessageSubscriber myMessageSubScriber = new MessageSubscriber();
                myMessagePublisher.messageEvent      += myMessageSubScriber.HandleMessage;

                MsgArgClass myMsg = new MsgArgClass("Database updated!");

                myMessagePublisher.TrigEvent(myMsg);
            });

            return(View("UploadDocument"));

            void SavePropertyValue(SqlConnection sqlCon, DB_Context loccontext, int myPropertyId, string myPropertyValue, int rowNo)
            // Saves Property Values in database tables
            {
                myPropertyValue = myPropertyValue.Replace("'", "''");

                string sqlPropValue = "INSERT INTO PROPVALUES (PROPERTYID, PROPERTYVALUE) SELECT " + myPropertyId.ToString() + ", '" +
                                      myPropertyValue + "' WHERE NOT EXISTS (SELECT * FROM PropValues WHERE PropertyValue = '" + myPropertyValue + "' AND PROPERTYID = " +
                                      myPropertyId.ToString() + ")";

                SqlCommand addPropVCommand = new SqlCommand(sqlPropValue, sqlCon);

                int nRows = addPropVCommand.ExecuteNonQuery();

                string sqlGetPropValueId = "SELECT PROPERTYVALUEID FROM PROPVALUES  WHERE PropertyValue = '" + myPropertyValue + "' AND PROPERTYID = " +
                                           myPropertyId.ToString();

                string sqlPropRow = "INSERT INTO PROPROWS (ROWID, PROPERTYVALUEID) VALUES (" + rowNo.ToString() + ",(" + sqlGetPropValueId + "))";

                SqlCommand addPropRCommand = new SqlCommand(sqlPropRow, sqlCon);


                nRows = addPropRCommand.ExecuteNonQuery();
            }

            void SaveDataValue(SqlConnection sqlCon, DB_Context loccontext, int myDataId, string myDataValue, int rowNo)
            // Saves Data Values in database
            {
                // Replace decimal comma with decimal point
                myDataValue = myDataValue.Replace(",", ".");

                string addDataRSql = "INSERT INTO DATAROWS (ROWID, DATAID, DATAVALUE) VALUES (" + rowNo.ToString() + "," + myDataId + "," + myDataValue + ")";

                SqlCommand addDataRCommand = new SqlCommand(addDataRSql, sqlCon);

                addDataRCommand.ExecuteNonQuery();
            }
        }