public Task <vh_expense_type_fieldC> GetSingle(int id)
        {
            vh_expense_type_fieldC _item = null;
            string _sql = null;

            try
            {
                using (var _db = fnn.GetDbConnection())
                {
                    _sql  = string.Format("select * from {0} where et_field_type_id = {1} and delete_id = 0", table_name.ToDbSchemaTable());
                    _item = _db.Query <vh_expense_type_fieldC>(_sql).FirstOrDefault();
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_item));
        }
        public Task <vh_expense_type_fieldC> AddExpenseTypeField(dto_expense_type_field_new _dto)
        {
            vh_expense_type_fieldC _obj = null;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_create_expense_type_field))
            {
                _obj = null;
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_obj));
            }

            if (_dto == null)
            {
                AddErrorMessage("Error", "Error", "Extra Field Object Is Null");
                return(Task.FromResult(_obj));
            }
            if (string.IsNullOrEmpty(_dto.et_field_name))
            {
                AddErrorMessage("Error", "Error", "Field Name Is Missing");
                return(Task.FromResult(_obj));
            }
            if (_dto.et_field_type_id == 0)
            {
                AddErrorMessage("Error", "Error", "Field Type Not Selected");
                return(Task.FromResult(_obj));
            }
            if (_dto.exp_type_id == 0)
            {
                AddErrorMessage("Error", "Error", "Expense Type Not Selected");
                return(Task.FromResult(_obj));
            }
            try
            {
                using (var _db = fnn.GetDbContext())
                {
                    var exp_type = _db.EXPENSE_TYPES.Where(e => e.exp_type_id == _dto.exp_type_id & e.delete_id == 0).FirstOrDefault();
                    if (exp_type == null)
                    {
                        AddErrorMessage("Error", "Error", "Expense Type Object Can Not Be Found");
                        return(Task.FromResult(_obj));
                    }
                    _obj = new vh_expense_type_fieldC()
                    {
                        et_field_name      = _dto.et_field_name.Trim(),
                        et_field_type_id   = _dto.et_field_type_id,
                        exp_type_id        = _dto.exp_type_id,
                        fs_timestamp       = fnn.GetUnixTimeStamp(),
                        server_edate       = fnn.GetServerDate(),
                        created_by_user_id = m_logged_user.user_id
                    };
                    _db.EXPENSE_TYPE_FIELDS.Add(_obj);
                    var _retVal = _db.SaveChangesWithDuplicateKeyDetected();
                    if (_retVal == null || _retVal.Value == true)
                    {
                        AddErrorMessage("Duplicate Key Error", "Duplicate Key Error", "You Have Entered A Duplicate Extra Field Name");
                        _obj = null;
                        return(Task.FromResult(_obj));
                    }
                    string _sql = string.Format("update {0} set field_count = (field_count + 1), fs_timestamp = {1} where exp_type_id = {2} and delete_id = 0",
                                                FleetManager.DbBase.tableNames.exp_type_tb.ToDbSchemaTable(),
                                                fnn.GetUnixTimeStamp(),
                                                _dto.exp_type_id);
                    _db.Database.ExecuteNonQuery(_sql);
                    _db.SaveChanges();
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_obj));
        }
        public Task <vh_expense_type_fieldC> UpdateExpenseTypeField(dto_expense_type_field_updateC _dto)
        {
            vh_expense_type_fieldC _existing = null;

            if (fnn.LOGGED_USER.DoesNotHaveRight(em.user_rights_types.can_edit_expense_type_field))
            {
                _existing = null;
                AddErrorMessage("Limited Rights Error", "Rights Error", "You Can Not Perform This Operation");
                return(Task.FromResult(_existing));
            }

            if (_dto == null)
            {
                AddErrorMessage("Update Error", "Save Error", "Vehicle Object Is Null!");
                _existing = null;
                return(Task.FromResult(_existing));
            }
            if (_dto.et_field_id == 0)
            {
                AddErrorMessage("Update Error", "Save Error", "Expense Type Field Id Is Null!");
                _existing = null;
                return(Task.FromResult(_existing));
            }
            if (string.IsNullOrEmpty(_dto.et_field_name))
            {
                AddErrorMessage("Error", "Error", "Expense Type Field Name Is Missing");
                return(Task.FromResult(_existing));
            }
            try
            {
                using (var _trans = new ZUpdateContext())
                {
                    _existing = _trans.Context.EXPENSE_TYPE_FIELDS.Where(e => e.et_field_id == _dto.et_field_id & e.delete_id == 0).FirstOrDefault();
                    if (_existing == null)
                    {
                        _existing = null;
                        AddErrorMessage("Update Error", "Save Error", "Unable To Find Expense Type Field Object");
                        return(Task.FromResult(_existing));
                    }

                    if (_existing.et_field_name.ToLower() != _dto.et_field_name.ToLower())
                    {
                        var _ret = DbHelper.UpdatePrimaryKeyColumn(new DbHelperPrimarykeyUpdateC
                        {
                            col_to_update = "et_field_name",
                            new_col_value = _dto.et_field_name.Trim().ToProperCase(),
                            table_name    = DbHelper.GetTableSchemaName(table_name),
                            pk_col_name   = "et_field_id",
                            pk_id         = _dto.et_field_id
                        }, _trans.Context);
                        if (_ret == null || _ret.Value == false)
                        {
                            AddErrorMessage("Error", "Update Error", "Expense Type Field Name Already Exists");
                            _existing = null;
                            _trans.RollBack();
                            return(Task.FromResult(_existing));
                        }
                        else
                        {
                            _trans.Context.SaveChanges();
                            _existing = _trans.Context.EXPENSE_TYPE_FIELDS.Where(e => e.et_field_id == _dto.et_field_id & e.delete_id == 0).FirstOrDefault();
                        }
                    }
                    SimpleMapper.PropertyMap(_dto, _existing);
                    _trans.Context.EXPENSE_TYPE_FIELDS.AddOrUpdateExtension(_existing);
                    _trans.Context.SaveChanges();
                    _trans.Commit();
                    return(Task.FromResult(_existing));
                }
            }
            catch (SqlException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (DbException ex)
            {
                LoggerX.LogException(ex);
            }
            catch (Exception ex)
            {
                LoggerX.LogException(ex);
            }
            return(Task.FromResult(_existing));
        }