public void TrigEvent(MsgArgClass msg) { messageEvent(this, msg); }
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? }
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(); } }