예제 #1
0
        private void submitButton_Click(object sender, EventArgs e)
        {
            if (!isFormValid)
            {
                MessageBox.Show(@"Fix the errors in the form and submit. " + System.Environment.NewLine + errorMessages.ToString());
                return;
            }
            //Process added resources
            List <string> resourcesToAdd = new List <string>();

            foreach (string resName in addedResource)
            {
                string name    = resName;
                var    resData = (from resource in loggedInUser.UserResources
                                  where resource.ResourceName == name
                                  select resource).FirstOrDefault();
                if (resData != null)
                {
                    resourcesToAdd.Add(resData.ResourceID);
                    resourcesToAdd.Add("Y");
                    resourcesToAdd.Add(resData.ResourceMask.ToString());
                }
            }
            List <string> resourcesToRemove = new List <string>();

            foreach (string resName in removedResource)
            {
                string name    = resName;
                var    resData = (from resource in _UserVO.UserResources
                                  where resource.ResourceName == name
                                  select resource).FirstOrDefault();
                if (resData != null)
                {
                    resourcesToRemove.Add(resData.ResourceID);
                    resourcesToRemove.Add("N");
                    resourcesToRemove.Add(resData.ResourceMask.ToString());
                }
            }

            List <string> resourcesToModify = new List <string>();

            resourcesToModify.AddRange(resourcesToAdd);
            resourcesToModify.AddRange(resourcesToRemove);
            List <string> limitsToModify = new List <string>();

            foreach (DataGridViewRow dgvr in gvLimits.Rows)
            {
                string editedValue = dgvr.Cells[2].EditedFormattedValue.ToString();
                if (editedValue.Contains("$"))
                {
                    editedValue = editedValue.Remove(0, 1);
                }
                decimal limitData = Utilities.GetDecimalValue(editedValue, 0);

                int prodoffid   = Utilities.GetIntegerValue(dgvr.Cells[0].Value, 0);
                int roleLimitId = Utilities.GetIntegerValue(dgvr.Cells[3].Value, 0);

                var userLimitData = (from limit in selectedUserLimits
                                     where limit.ProdOfferingId == prodoffid &&
                                     string.IsNullOrEmpty(limit.StoreID)
                                     select limit).FirstOrDefault();
                if (userLimitData != null)
                {
                    if (userLimitData.Limit != limitData)
                    {
                        limitsToModify.Add(userLimitData.ProdOfferingId.ToString());
                        limitsToModify.Add(limitData.ToString());
                    }
                }
                else
                {
                    limitsToModify.Add(prodoffid.ToString());
                    if (roleLimitId == 0)
                    {
                        limitsToModify.Add(limitData.ToString());
                    }
                    else
                    {
                        limitsToModify.Add(limitData == maxLoanStateLimit ? "-1" : limitData.ToString());
                    }
                }
            }

            string errorCode;
            string errorText;

            //Call update employee profile SP
            GlobalDataAccessor.Instance.beginTransactionBlock();
            bool retValue = SecurityProfileProcedures.UpdateEmployeeProfile(_UserVO.UserID, "", _ShopID, loggedInUser.UserName, resourcesToModify, limitsToModify, GlobalDataAccessor.Instance.DesktopSession, out errorCode, out errorText);

            if (retValue)
            {
                MessageBox.Show(@"Successfully updated user profile");
                GlobalDataAccessor.Instance.endTransactionBlock(EndTransactionType.COMMIT);
            }
            else
            {
                MessageBox.Show(errorText);
                GlobalDataAccessor.Instance.endTransactionBlock(EndTransactionType.ROLLBACK);
            }
            NavControlBox.Action = NavBox.NavAction.BACKANDSUBMIT;
        }