Exemplo n.º 1
0
        /// <summary>
        ///  逻辑删除
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="info">实体</param>
        /// <returns>删除行数</returns>
        public int LogicDelete <T>(T info) where T : new()
        {
            int    count     = 0;
            string tableName = "";
            string sql       = "";

            string where = "";
            string UPDATEUSR = "";
            T      oldInfo   = default(T);
            DataChangeManageDAL  markManager = new DataChangeManageDAL();
            List <DataParameter> parameters  = new List <DataParameter>();

            try
            {
                //获取表名
                Type             type          = typeof(T);
                object[]         attrsClassAtt = type.GetCustomAttributes(typeof(DBTableAttribute), true);
                DBTableAttribute tableAtt      = (DBTableAttribute)attrsClassAtt[0];
                tableName = tableAtt.TableName;

                //获取主键信息
                Dictionary <string, object> pkColumns = new DataQueryHelper().GetPkColumns <T>(info);

                UPDATEUSR = BindHelper.GetPropertyValue(info, "UPDATEUSER") == null ? "" : BindHelper.GetPropertyValue(info, "UPDATEUSER").ToString();

                //获取原实体
                oldInfo = (T)(info as BaseEntity).Clone();
                oldInfo = this.BaseSession.Get <T>(info);

                //获取数据主键
                string dataID = this.GetEntityDataID <T>(info);

                //逻辑删除
                sql = string.Format("UPDATE {0} SET FLGDEL='1',UPDATEDATE=GETDATE(),UPDATEUSER=@UPDATEUSER WHERE ", tableName, UPDATEUSR);

                parameters.Add(new DataParameter("UPDATEUSER", UPDATEUSR));

                foreach (string key in pkColumns.Keys)
                {
                    where += " AND " + key + " = @" + key;
                    parameters.Add(new DataParameter(key, pkColumns[key]));
                }

                sql += where.Substring(4);

                sql   = this.ChangeSqlByDB(sql, this.BaseSession);
                count = this.BaseSession.ExecuteSql(sql, parameters.ToArray());

                //记录痕迹
                markManager.Session = this.BaseSession;
                //markManager.RecordDataChangeMarkDetail<T>(DataOprType.Delete, UPDATEUSR, dataID, oldInfo, info);


                return(count);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Exemplo n.º 2
0
        public override void ExecuteCommand(IList <NavigationModelNodeBase> navigationNodes, NavigationModelNodeTask task, ICollection <String> parameters)
        {
            foreach (NavigationModelNode navigationNode in navigationNodes)
            {
                IDataItem dataitemIncident       = null;
                IDataItem dataitemIncidentStatus = null;
                IDataItem dataitemMessageType    = null;
                bool      boolIsFormAction       = false;
                Uri       uriFormsDefinition     = new Uri(NavigationModel.NavigationRoot, "Windows/Forms/");
                if (navigationNode != null && uriFormsDefinition.IsBaseOf(navigationNode.Location))
                {
                    boolIsFormAction = true;
                    FrameworkElement userControl = GetIncidentControl(navigationNode);
                    if (userControl != null)
                    {
                        if (userControl.CheckAccess())
                        {
                            dataitemIncident = userControl.DataContext as IDataItem;
                        }
                        else
                        {
                            using (AutoResetEvent autoreset = new AutoResetEvent(false))
                            {
                                EventHandler delegateHandleUserControl =
                                    delegate(object sender, EventArgs e)
                                {
                                    dataitemIncident = userControl.DataContext as IDataItem;
                                    autoreset.Set();
                                };

                                userControl.Dispatcher.BeginInvoke(
                                    System.Windows.Threading.DispatcherPriority.Normal,
                                    delegateHandleUserControl,
                                    null,
                                    null);
                                autoreset.WaitOne();
                            }
                        }
                    }
                }
                else
                {
                    //Console Node
                    IDataItem dataItem = navigationNode as IDataItem;
                    if (dataItem != null)
                    {
                        dataitemIncident = DataQueryHelper.GetEmoProjectionItem((Guid)dataItem[Constants.MP_PROPERTY_ID_DOLLAR], new Guid(Constants.MP_PROJECTION_TYPE_INCIDENT));
                    }
                }

                String  strMessage         = String.Empty;
                Boolean boolAddToActionLog = false;
                dataitemIncidentStatus = (IDataItem)dataitemIncident[Constants.MP_PROPERTY_INCIDENT_STATUS];
                bool?result = SendEmailForm.LaunchDialog(task.DisplayName, ref dataitemMessageType, ref dataitemIncidentStatus, out strMessage, out boolAddToActionLog);
                if (result == null || !result.Value || String.IsNullOrEmpty(strMessage))
                {
                    // The user either did not enter any comment or he clicked the cancel button
                    break;
                }
                dataitemIncident[Constants.MP_PROPERTY_INCIDENT_MESSAGE]      = strMessage;
                dataitemIncident[Constants.MP_PROPERTY_INCIDENT_MESSAGE_TYPE] = dataitemMessageType;
                dataitemIncident[Constants.MP_PROPERTY_INCIDENT_STATUS]       = dataitemIncidentStatus;

                if (boolAddToActionLog)
                {
                    //Add the Action Log Object
                    IDataItem dataitemSentEmailActionType = DataQueryHelper.GetEnumerations(new Guid(Constants.MP_ENUM_TYPE_SENT_EMAIL), false)[0];
                    IDataItem dataitemActionLogItem       = DataQueryHelper.CreateNewInstanceBindableItem(new Guid(Constants.MP_CLASS_TYPE_ACTION_LOG));
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ENTERED_DATE] = DateTime.Now;
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_DESCRIPTION]  = strMessage;
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ID]           = Guid.NewGuid().ToString();
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ACTION_TYPE]  = dataitemSentEmailActionType;
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_TITLE]        = dataitemSentEmailActionType[DataItemConstants.DisplayName];
                    dataitemActionLogItem[Constants.MP_PROPERTY_ACTION_LOG_ENTERED_BY]   = (String)DataQueryHelper.GetCurrentLoggedInUser()[DataItemConstants.DisplayName];

                    if (dataitemIncident.HasProperty(Constants.MP_PROPERTY_ACTION_LOG_ACTION_LOGS))
                    {
                        dataitemIncident[Constants.MP_PROPERTY_ACTION_LOG_ACTION_LOGS] = dataitemActionLogItem;
                    }
                }

                if (!boolIsFormAction)
                {
                    //If this was initiated from the console we need to update the incident straight away
                    EnterpriseManagementObjectProjectionDataType.UpdateDataItem(dataitemIncident);
                }
            }
        }