public static bool Share2User(CDatabase db, CUser user, int share2UserID, int[] IDs) { if (!user.CanDo(CUser.ACL.EDIT) || !user.CanDo(CUser.ACL.EDITUSERS)) { return(false); } try { string strIDs = ""; using (MySqlCommand cmd = new MySqlCommand("INSERT IGNORE INTO trackers2users (UserID, TrackerID) VALUES (" + share2UserID + ", ?TrackerID)", db.connection)) { cmd.Parameters.Add("?TrackerID", MySqlDbType.Int32); for (int i = 0; i < IDs.Length; i++) { strIDs += ((i != 0) ? "," : "") + IDs[i]; cmd.Parameters["?TrackerID"].Value = IDs[i]; cmd.ExecuteNonQuery(); } } //удалить неактуальыне using (MySqlCommand cmd = new MySqlCommand("DELETE FROM trackers2users WHERE UserID=" + share2UserID + ((strIDs.Length > 0) ? " AND TrackerID NOT IN (" + strIDs + ")" : ""), db.connection)) cmd.ExecuteNonQuery(); } catch (Exception e) { Debug.Assert(false, e.ToString()); return(false); } return(true); }
public static bool SetOwner(CDatabase db, CUser user, int newOwnerID, int[] IDs) { if (!user.CanDo(CUser.ACL.EDIT) || !user.CanDo(CUser.ACL.EDITUSERS)) { return(false); } try { using (MySqlCommand cmd = new MySqlCommand("UPDATE trackers SET UserID = " + newOwnerID + " WHERE ID = ?ID", db.connection)) { cmd.Parameters.Add("?ID", MySqlDbType.Int32); for (int i = 0; i < IDs.Length; i++) { cmd.Parameters["?ID"].Value = IDs[i]; cmd.ExecuteNonQuery(); } } } catch (Exception e) { Debug.Assert(false, e.ToString()); return(false); } return(true); }
public override DBQuery GetDeleteQuery(int ID, CUser user) { if (!user.CanDo(CUser.ACL.EDIT) || !user.CanDo(CUser.ACL.EDIT_TRACKERS_IMEI)) { return(null); } return(new DBQuery("DELETE FROM points WHERE TrackerID=" + ID + " AND TrackerID IN (SELECT ID FROM Trackers WHERE ID=" + ID + " AND UserID=" + user.m_nID + ");" + "DELETE FROM Events WHERE TrackerID=" + ID + " AND TrackerID IN (SELECT ID FROM Trackers WHERE ID=" + ID + " AND UserID=" + user.m_nID + ");" + "DELETE FROM Commands WHERE TrackerID=" + ID + " AND TrackerID IN (SELECT ID FROM Trackers WHERE ID=" + ID + " AND UserID=" + user.m_nID + ");" + "DELETE FROM Trackers WHERE ID=" + ID + " AND UserID=" + user.m_nID + ";" + "DELETE FROM trackers2users WHERE TrackerID=" + ID + " AND UserID=" + user.m_nID + ";")); }
public bool UpdateGroupIDs(CDatabase db, CUser user, CTracker obj, int[] groupIDs) { if (!user.CanDo(CUser.ACL.EDIT)) { return(false); } try { string strIDs = ""; //добавить новые группы using (MySqlCommand cmd = new MySqlCommand("INSERT IGNORE INTO trackers2groups(GroupID, TrackerID) VALUES (?GroupID, " + obj.m_nID + ")", db.connection)) { cmd.Parameters.Add("?GroupID", MySqlDbType.Int32); for (int i = 0; i < groupIDs.Length; i++) { cmd.Parameters["?GroupID"].Value = groupIDs[i]; cmd.ExecuteNonQuery(); strIDs += ((i != 0) ? "," : "") + groupIDs[i]; } } //удалить неактуальыне using (MySqlCommand cmd = new MySqlCommand("DELETE FROM trackers2groups WHERE TrackerID = " + obj.m_nID + " " + "AND GroupID IN (SELECT ID FROM TrackerGroups WHERE UserID = " + user.m_nID + ") " + ((strIDs.Length > 0) ? " AND GroupID NOT IN (" + strIDs + ")" : ""), db.connection)) cmd.ExecuteNonQuery(); } catch (Exception e) { Debug.Assert(false, e.ToString()); return(false); } return(true); }
public bool Update(CDatabase db, CUser user, CTracker obj)//TODO: пока настраивает только владелец { if (!user.CanDo(CUser.ACL.EDIT)) { return(true); } try { string strQuery = "UPDATE Trackers SET Name=?Name, Comment=?Comment, DeviceType = ?DeviceType, IconID=?IconID, " + "HistoryColor=?Color, Phone=?Phone, SleepPeriod=?SleepPeriod, " + "ParkRadius=?ParkRadius, MinParkTime=?MinParkTime, MinIdleTime=?MinIdleTime, " + "AlarmParkTime=?AlarmParkTime, IMEI=?IMEI, Flags=?Flags," + "FuelExpense=?FuelExpense, FuelExpenseHr=?FuelExpenseHr, MaxSpeed=?MaxSpeed, MinDrain=?MinDrain, MinDrainSpeed=?MinDrainSpeed, " + "StateNumber=?StateNumber, DefLat=?DefLat, DefLng=?DefLng," + "DaysToStore=?DaysToStore WHERE ID=" + obj.m_nID + " AND UserID=" + user.m_nID; if (!user.CanDo(CUser.ACL.EDIT_TRACKERS_IMEI)) { strQuery = strQuery.Replace("IMEI=?IMEI,", ""); } using (MySqlCommand cmd = new MySqlCommand(strQuery, db.connection)) { cmd.Parameters.AddWithValue("?Name", obj.m_strName); cmd.Parameters.AddWithValue("?Comment", obj.m_strComment); cmd.Parameters.AddWithValue("?DeviceType", obj.m_strDeviceType); cmd.Parameters.AddWithValue("?Flags", obj.m_strFlags); cmd.Parameters.AddWithValue("?IconID", obj.m_nIconID); cmd.Parameters.AddWithValue("?Color", obj.m_strColor); cmd.Parameters.AddWithValue("?Phone", obj.m_strPhone); cmd.Parameters.AddWithValue("?SleepPeriod", obj.m_Timeout); cmd.Parameters.AddWithValue("?ParkRadius", obj.m_ParkRadius); cmd.Parameters.AddWithValue("?MaxSpeed", obj.m_MaxSpeed); cmd.Parameters.AddWithValue("?AlarmParkTime", obj.m_AlarmParkTime); if (obj.m_IMEI != 0) { cmd.Parameters.AddWithValue("?IMEI", obj.m_IMEI); } else { cmd.Parameters.AddWithValue("?IMEI", null); } cmd.Parameters.AddWithValue("?MinParkTime", obj.m_MinParkTime); cmd.Parameters.AddWithValue("?MinIdleTime", obj.m_MinIdleTime); cmd.Parameters.AddWithValue("?FuelExpense", obj.m_fFuelExpensePerKm); cmd.Parameters.AddWithValue("?FuelExpenseHr", obj.m_fFuelExpensePerHr); cmd.Parameters.AddWithValue("?MinDrain", obj.m_fMinDrain); cmd.Parameters.AddWithValue("?MinDrainSpeed", obj.m_fMinDrainSpeed); cmd.Parameters.AddWithValue("?DaysToStore", obj.m_nDaysToStore); //cmd.Parameters.AddWithValue("?InstallDate", obj.m_dtInstallDate); cmd.Parameters.AddWithValue("?StateNumber", obj.m_strStateNumber); cmd.ExecuteNonQuery(); } } catch (Exception e) { Debug.Assert(false, e.ToString()); return(false); } return(true); }
public override DBQuery GetInsertQuery(CUser user, CTracker tracker) { return((user.CanDo(CUser.ACL.EDIT) && user.CanDo(CUser.ACL.EDIT_TRACKERS_IMEI)) ? new DBQuery("INSERT INTO Trackers (UserID, CreateDate) VALUES ('" + user.m_nID + "', " + CTime.GetTime(DateTime.UtcNow) + ")") : null); }