From 83f0cac52abff07ae482dbc46c2de861d7c3afed Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Fri, 15 Mar 2019 18:15:38 +0100 Subject: [PATCH] Fix eliminazione e cancellazione utenti --- MConnectSDK/MConnectClient.cs | 91 ++++++++++++++++++++++----- TestClient/MainForm.Designer.cs | 61 ++++++++++++++---- TestClient/MainForm.cs | 107 ++++++++++++++++++++++++++------ 3 files changed, 213 insertions(+), 46 deletions(-) diff --git a/MConnectSDK/MConnectClient.cs b/MConnectSDK/MConnectClient.cs index b46eb44..8174ebf 100644 --- a/MConnectSDK/MConnectClient.cs +++ b/MConnectSDK/MConnectClient.cs @@ -878,7 +878,15 @@ namespace MConnectSDK var userList = new UserPayload(); List answ = userListMConnect(); // filtro SOLO per stato (improted) - answ = (List)answ.Where(X => X.LoginStatus == UserStatus.IMPORTED); + var resFilt = answ.FindAll(X => X.LoginStatus == UserStatus.IMPORTED); + if (resFilt.Count > 0) + { + answ = resFilt; + } + else + { + answ = new List(); + } // aggiungo nella risposta... userList.UserList = answ; userList.Message = $"{answ.Count} Users Imported Found!"; @@ -888,28 +896,77 @@ namespace MConnectSDK return _currStatus; } - /// - /// Imposta gli users come IMPORTATI - /// - /// - /// - public bool setUsersImported(IEnumerable UserIds) - { - bool answ = false; - - return answ; - } /// /// Imposta UN SINGOLO utente come importato () o eliminato(false) - /// - /// + /// + /// CHI invia la richeista (x decidere come impostare status), HMI = LOCAL + /// /// true=importato / false = cancellato/non + importato /// - public bool setUserImported(string UserId, bool imported) + public async Task setUserImported(SourceType sender, string username, bool imported = true) { - bool answ = false; + var _currStatus = reqStatus; + await Task.Run(() => + { + // inizio da watchdog... + setWatchdog(); + var userList = new UserPayload(); + List answ = userListMConnect(); + // CERCO utente x settare importato... + if (answ.Exists(x => x.Username == username)) + { + // cerco ed aggiorno + var obj = answ.FirstOrDefault(x => x.Username == username); + if (obj != null) + { + // se mi chiede imported --> setto sempre... + if (imported) + { + obj.LoginStatus = UserStatus.IMPORTED; + } + // altrimenti controllo + else + { + // se chiede HMI/LOCAL --> NOT_IMPORTED + if (sender == SourceType.LOCAL) + { + obj.LoginStatus = UserStatus.NOT_IMPORTED; + } + else + { + // SE CHIEDE CLOUD e NON E' importato --> ELIMINO + if (obj.LoginStatus != UserStatus.IMPORTED) + { + // elimino ANCHE da cache pwd (se c'era) + if (userPwdLocalCache.Exists(x => x.user_id == obj.UserId)) + { + var tmpData = userPwdLocalCache; + tmpData.RemoveAll(x => x.user_id == obj.UserId); + userPwdLocalCache = tmpData; + } + // elimino... + answ.Remove(obj); + } + // SE CHIEDE CLOUD ed E' importato --> imposto DELETED + else + { + obj.LoginStatus = UserStatus.DELETED; + } + } - return answ; + } + //obj.LoginStatus = imported ? UserStatus.IMPORTED : UserStatus.DELETED; + } + // salvo + userListCache = answ; + } + // aggiungo nella risposta... + userList.UserList = answ; + userList.Message = "User Updated!"; + _currStatus.Payload = userList; + reqStatus = _currStatus; + }); + return _currStatus; } /// diff --git a/TestClient/MainForm.Designer.cs b/TestClient/MainForm.Designer.cs index 9bd47f0..a9c6d77 100644 --- a/TestClient/MainForm.Designer.cs +++ b/TestClient/MainForm.Designer.cs @@ -62,6 +62,9 @@ this.label6 = new System.Windows.Forms.Label(); this.lblConsole = new System.Windows.Forms.Label(); this.btnGetUserCreatedList = new System.Windows.Forms.Button(); + this.btnImportUser = new System.Windows.Forms.Button(); + this.btnDeleteUserHMI = new System.Windows.Forms.Button(); + this.btnDeleteUserCloud = new System.Windows.Forms.Button(); this.statusStrip1.SuspendLayout(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -176,6 +179,9 @@ // this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.btnDeleteUserCloud); + this.groupBox2.Controls.Add(this.btnDeleteUserHMI); + this.groupBox2.Controls.Add(this.btnImportUser); this.groupBox2.Controls.Add(this.btnGetUserCreatedList); this.groupBox2.Controls.Add(this.btnFlush); this.groupBox2.Controls.Add(this.btnGetClientStatus); @@ -208,7 +214,7 @@ // // btnGetClientStatus // - this.btnGetClientStatus.Location = new System.Drawing.Point(406, 21); + this.btnGetClientStatus.Location = new System.Drawing.Point(384, 21); this.btnGetClientStatus.Name = "btnGetClientStatus"; this.btnGetClientStatus.Size = new System.Drawing.Size(111, 32); this.btnGetClientStatus.TabIndex = 24; @@ -219,7 +225,7 @@ // label10 // this.label10.AutoSize = true; - this.label10.Location = new System.Drawing.Point(908, 45); + this.label10.Location = new System.Drawing.Point(669, 67); this.label10.Name = "label10"; this.label10.Size = new System.Drawing.Size(33, 17); this.label10.TabIndex = 23; @@ -227,7 +233,7 @@ // // txtPwd // - this.txtPwd.Location = new System.Drawing.Point(960, 42); + this.txtPwd.Location = new System.Drawing.Point(721, 64); this.txtPwd.Name = "txtPwd"; this.txtPwd.Size = new System.Drawing.Size(100, 22); this.txtPwd.TabIndex = 22; @@ -235,7 +241,7 @@ // label9 // this.label9.AutoSize = true; - this.label9.Location = new System.Drawing.Point(908, 16); + this.label9.Location = new System.Drawing.Point(669, 29); this.label9.Name = "label9"; this.label9.Size = new System.Drawing.Size(36, 17); this.label9.TabIndex = 21; @@ -243,16 +249,16 @@ // // txtUser // - this.txtUser.Location = new System.Drawing.Point(960, 13); + this.txtUser.Location = new System.Drawing.Point(721, 26); this.txtUser.Name = "txtUser"; this.txtUser.Size = new System.Drawing.Size(100, 22); this.txtUser.TabIndex = 20; // // btnTryUserLogin // - this.btnTryUserLogin.Location = new System.Drawing.Point(911, 70); + this.btnTryUserLogin.Location = new System.Drawing.Point(839, 21); this.btnTryUserLogin.Name = "btnTryUserLogin"; - this.btnTryUserLogin.Size = new System.Drawing.Size(149, 27); + this.btnTryUserLogin.Size = new System.Drawing.Size(106, 32); this.btnTryUserLogin.TabIndex = 19; this.btnTryUserLogin.Text = "tryUserLogin"; this.btnTryUserLogin.UseVisualStyleBackColor = true; @@ -260,7 +266,7 @@ // // btnGetUserList // - this.btnGetUserList.Location = new System.Drawing.Point(541, 21); + this.btnGetUserList.Location = new System.Drawing.Point(519, 21); this.btnGetUserList.Name = "btnGetUserList"; this.btnGetUserList.Size = new System.Drawing.Size(132, 32); this.btnGetUserList.TabIndex = 18; @@ -270,7 +276,7 @@ // // btnGetOrgCode // - this.btnGetOrgCode.Location = new System.Drawing.Point(406, 59); + this.btnGetOrgCode.Location = new System.Drawing.Point(384, 59); this.btnGetOrgCode.Name = "btnGetOrgCode"; this.btnGetOrgCode.Size = new System.Drawing.Size(111, 32); this.btnGetOrgCode.TabIndex = 17; @@ -280,7 +286,7 @@ // // btnTryAuth // - this.btnTryAuth.Location = new System.Drawing.Point(278, 21); + this.btnTryAuth.Location = new System.Drawing.Point(256, 21); this.btnTryAuth.Name = "btnTryAuth"; this.btnTryAuth.Size = new System.Drawing.Size(111, 32); this.btnTryAuth.TabIndex = 16; @@ -411,7 +417,7 @@ // // btnGetUserCreatedList // - this.btnGetUserCreatedList.Location = new System.Drawing.Point(541, 62); + this.btnGetUserCreatedList.Location = new System.Drawing.Point(519, 59); this.btnGetUserCreatedList.Name = "btnGetUserCreatedList"; this.btnGetUserCreatedList.Size = new System.Drawing.Size(132, 32); this.btnGetUserCreatedList.TabIndex = 26; @@ -419,6 +425,36 @@ this.btnGetUserCreatedList.UseVisualStyleBackColor = true; this.btnGetUserCreatedList.Click += new System.EventHandler(this.btnGetUserCreatedList_Click); // + // btnImportUser + // + this.btnImportUser.Location = new System.Drawing.Point(839, 59); + this.btnImportUser.Name = "btnImportUser"; + this.btnImportUser.Size = new System.Drawing.Size(106, 32); + this.btnImportUser.TabIndex = 27; + this.btnImportUser.Text = "importUser"; + this.btnImportUser.UseVisualStyleBackColor = true; + this.btnImportUser.Click += new System.EventHandler(this.btnImportUser_Click); + // + // btnDeleteUserHMI + // + this.btnDeleteUserHMI.Location = new System.Drawing.Point(951, 21); + this.btnDeleteUserHMI.Name = "btnDeleteUserHMI"; + this.btnDeleteUserHMI.Size = new System.Drawing.Size(106, 32); + this.btnDeleteUserHMI.TabIndex = 28; + this.btnDeleteUserHMI.Text = "delete HMI"; + this.btnDeleteUserHMI.UseVisualStyleBackColor = true; + this.btnDeleteUserHMI.Click += new System.EventHandler(this.btnDeleteUser_Click); + // + // btnDeleteUserCloud + // + this.btnDeleteUserCloud.Location = new System.Drawing.Point(951, 59); + this.btnDeleteUserCloud.Name = "btnDeleteUserCloud"; + this.btnDeleteUserCloud.Size = new System.Drawing.Size(106, 32); + this.btnDeleteUserCloud.TabIndex = 29; + this.btnDeleteUserCloud.Text = "delete Cloud"; + this.btnDeleteUserCloud.UseVisualStyleBackColor = true; + this.btnDeleteUserCloud.Click += new System.EventHandler(this.btnDeleteUserCloud_Click); + // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); @@ -479,6 +515,9 @@ private System.Windows.Forms.Button btnGetClientStatus; private System.Windows.Forms.Button btnFlush; private System.Windows.Forms.Button btnGetUserCreatedList; + private System.Windows.Forms.Button btnImportUser; + private System.Windows.Forms.Button btnDeleteUserHMI; + private System.Windows.Forms.Button btnDeleteUserCloud; } } diff --git a/TestClient/MainForm.cs b/TestClient/MainForm.cs index 8308fb6..db3e2aa 100644 --- a/TestClient/MainForm.cs +++ b/TestClient/MainForm.cs @@ -63,6 +63,8 @@ namespace TestClient btnGetUserList.Enabled = enableBtn; btnTryUserLogin.Enabled = enableBtn; btnGetUserCreatedList.Enabled = enableBtn; + btnImportUser.Enabled = enableBtn; + btnDeleteUserHMI.Enabled = enableBtn; // controllo se visualizzare parametri di testing... bool showTP = chkTestMode.Checked; lblTokRet.Visible = showTP; @@ -354,13 +356,13 @@ namespace TestClient sb.AppendLine(string.Format("Cognome: {0}", userList[0].Cognome)); sb.AppendLine(string.Format("Nome: {0}", userList[0].Nome)); sb.AppendLine(string.Format("Status: {0}", userList[0].LoginStatus.ToString())); - lblConsole.Text = sb.ToString(); // aggiungo IMG user... se vuota default... if (userList[0].UserImage == null) { userList[0].UserImage = Image.FromFile(@"resources\userImg.png"); } pictBox.Image = userList[0].UserImage; + lblConsole.Text = sb.ToString(); // refresh! refreshRequestStatus(); }), ""); @@ -383,21 +385,24 @@ namespace TestClient sb.AppendLine("--------------------------------------------------"); sb.AppendLine("USERS CREATED FOUND: " + userList.Count.ToString()); sb.AppendLine("--------------------------------------------------"); - sb.AppendLine("first user:"); - sb.AppendLine(string.Format("user_id: {0}", userList[0].UserId)); - sb.AppendLine(string.Format("isAdmin: {0}", userList[0].IsAdmin)); - sb.AppendLine(string.Format("UserName: {0}", userList[0].Username)); - sb.AppendLine(string.Format("Email: {0}", userList[0].Email)); - sb.AppendLine(string.Format("Cognome: {0}", userList[0].Cognome)); - sb.AppendLine(string.Format("Nome: {0}", userList[0].Nome)); - sb.AppendLine(string.Format("Status: {0}", userList[0].LoginStatus.ToString())); - lblConsole.Text = sb.ToString(); - // aggiungo IMG user... se vuota default... - if (userList[0].UserImage == null) + if (userList.Count > 0) { - userList[0].UserImage = Image.FromFile(@"resources\userImg.png"); + sb.AppendLine("first user:"); + sb.AppendLine(string.Format("user_id: {0}", userList[0].UserId)); + sb.AppendLine(string.Format("isAdmin: {0}", userList[0].IsAdmin)); + sb.AppendLine(string.Format("UserName: {0}", userList[0].Username)); + sb.AppendLine(string.Format("Email: {0}", userList[0].Email)); + sb.AppendLine(string.Format("Cognome: {0}", userList[0].Cognome)); + sb.AppendLine(string.Format("Nome: {0}", userList[0].Nome)); + sb.AppendLine(string.Format("Status: {0}", userList[0].LoginStatus.ToString())); + // aggiungo IMG user... se vuota default... + if (userList[0].UserImage == null) + { + userList[0].UserImage = Image.FromFile(@"resources\userImg.png"); + } + pictBox.Image = userList[0].UserImage; } - pictBox.Image = userList[0].UserImage; + lblConsole.Text = sb.ToString(); // refresh! refreshRequestStatus(); }), ""); @@ -415,7 +420,7 @@ namespace TestClient UserData userData = new UserData(); var userResult = MCC.TryUserLogin(user, pwd); List userList = ((UserPayload)userResult.Result.Payload).UserList; - + var currImage = pictBox.Image; // controllo se ho risultato...) if (userList.Count == 1) { @@ -436,13 +441,12 @@ namespace TestClient sb.AppendLine(string.Format("Cognome: {0}", userData.Cognome)); sb.AppendLine(string.Format("Nome: {0}", userData.Nome)); sb.AppendLine(string.Format("Status: {0}", userList[0].LoginStatus.ToString())); - lblConsole.Text = sb.ToString(); // aggiungo IMG user... se vuota default... if (userList[0].UserImage == null) { userList[0].UserImage = Image.FromFile(@"resources\userImg.png"); } - pictBox.Image = userList[0].UserImage; + currImage = userList[0].UserImage; } else { @@ -455,6 +459,7 @@ namespace TestClient } synchronizationContext.Post(new SendOrPostCallback(o => { + pictBox.Image = currImage; lblConsole.Text = sb.ToString(); refreshRequestStatus(); }), ""); @@ -629,6 +634,27 @@ namespace TestClient sb.AppendLine(""); lblConsole.Text = sb.ToString(); } + /// + /// Username digitato + /// + protected string username + { + get + { + return txtUser.Text.Trim(); + } + } + /// + /// Password digitata + /// + protected string passwd + { + get + { + return txtPwd.Text.Trim(); + } + } + /// /// chiamata x login utente /// @@ -639,7 +665,7 @@ namespace TestClient // init in modalità Task based... await Task.Run(() => { - var retObj = doUserLogin(txtUser.Text.Trim(), txtPwd.Text.Trim()); + var retObj = doUserLogin(username, passwd); }); // aggiorno log console @@ -690,5 +716,50 @@ namespace TestClient sb.AppendLine(""); lblConsole.Text = sb.ToString(); } + + private async void btnImportUser_Click(object sender, EventArgs e) + { + await Task.Run(() => + { + var taskResult = MCC.setUserImported(SourceType.LOCAL, username, true); + // salvo il risultato restituito... + reqStatus = taskResult.Result; + + synchronizationContext.Post(new SendOrPostCallback(o => + { + refreshRequestStatus(); + }), ""); + }); + } + + private async void btnDeleteUser_Click(object sender, EventArgs e) + { + await Task.Run(() => + { + var taskResult = MCC.setUserImported(SourceType.LOCAL, username, false); + // salvo il risultato restituito... + reqStatus = taskResult.Result; + + synchronizationContext.Post(new SendOrPostCallback(o => + { + refreshRequestStatus(); + }), ""); + }); + } + + private async void btnDeleteUserCloud_Click(object sender, EventArgs e) + { + await Task.Run(() => + { + var taskResult = MCC.setUserImported(SourceType.CLOUD, username, false); + // salvo il risultato restituito... + reqStatus = taskResult.Result; + + synchronizationContext.Post(new SendOrPostCallback(o => + { + refreshRequestStatus(); + }), ""); + }); + } } }