Sysparameter Changes

Sysparameter Changes

Changes in Sysparameter Modify

  1. If user is making Sys Condition as Yes, then need to check SysParameterRules table if any record for this parameter is there
  2. If record exists and ind is L then then the referene sysparameter also should be Y
  3. If record exists and ind is D then then need to check the status of reference sysparameter if that is on we must sayThe following Sysparamter is On need to set off before updating this

Controller Changes

            var sysParameterLinkedInfo = _ISystemParameterRepository.GetSystemParameterLinkedInfo(_SystemParameter.ShortName, dbname);
            if(sysParameterLinkedInfo != null)
            {
                if(sysParameterLinkedInfo.RuleType == "I" && sysParameterLinkedInfo.SysCondition == "N")
                {
  
                    ModelState.AddModelError("SysCondition", $"Need to make SysParameter : {sysParameterLinkedInfo.Name} On");
                }
                else if(sysParameterLinkedInfo.RuleType == "D" && sysParameterLinkedInfo.SysCondition == "Y")
                {
   
                    ModelState.AddModelError("SysCondition", $"Need to make SysParameter : {sysParameterLinkedInfo.Name} Off");

                }
            }

Repository Changes

    public SystemParameter GetSystemParameterLinkedInfo(string sysParameterName, string dbname)
    {
        var query = @"SELECT ruletype, SP.name, syscondition
        FROM SysParameterRules S
        LEFT JOIN sysparameters SP ON S.RelatedParameter = SP.shortname
        WHERE S.SourceParameter = @sysparametername";
        
        using var connection = _DapperContext.SetClientConnection(dbname);
        var data = connection.QuerySingleOrDefault<SystemParameter>(query, new{sysParameterName});
        
        return data;
    }

Table Structure


CREATE TABLE SysParameterRules    
(        
    Id  INT PRIMARY KEY IDENTITY(1,1),
        SourceParameter NVARCHAR(30),
        RuleType  NVARCHAR(1), --- L - Linked, D - Delinked
        RelatedParameter NVARCHAR(30)
    );
    
INSERT INTO SysParameterRules (SourceParameter, RuleType, RelatedParameter)
VALUES ('EnableEInvoiceJSON', 'D', 'AutoEInvoice'), 
('AutoEInvoice', 'D', 'AutoEWayBill'),
('AutoEWayBill', 'I', 'AutoEInvoice'),
('InvoiceCarrierCharges', 'D', 'ForceIndent4AllBills'),
('ForceIndent4AllBills', 'D', 'InvoiceCarrierCharges')

---test case 
--- Enable E-Invoice JSON is on then AutoEInvoice must be off
---- AutoEInvoice is off then AutoEWayBill must be off
---- AutoEWayBill is on then AutoEInvoice must be on
---- InvoiceCarrierCharges is on ForceIndent4AllBills must be off (vice-versa)

Other Changes

New Property : ShortName, RuleType New Methods : SystemParameterValidateModify, GetSystemParameterLinkedInfo