prettify

baseline

C# class template

Template for a business class in C#.
The example is the "Party" from the "Party-Person-Organization" pattern.
Party.cs
public int nkPar { get; set; }
public byte[] rvPar { get; set; }
public int nfParPerOwn { get; set; }
public string sfParPerOwn { get; set; }
public string sParTag { get; set; }
public string ePar {get;set;}
public string sParAFM { get; set; }
public string sParDOY { get; set; }
public string sParTxt { get; set; }
public int nAudUser { get; set; }
public string sAudIp { get; set; }
public DateTime dAud { get; set; }

public string sError { get; set; }
public Party() {
   
Clear();
}
public Party(int nkPar) {
   
LoadNk(nkPar);
}
public Party Clear() {
    nkPar
= 0;
    rvPar
= Constants.rv0;
    nfParPerOwn
= 0;
    sfParPerOwn
= "";
    sParTag
= "";
    ePar
= "";
    sParAFM
= "";
    sParDOY
= "";
    sParTxt
= "";
    nAudUser
= UserLib.nkUsr;
    sAudIp
= "";
    dAud
= Constants.d0;
   
return this;
}
#region SQL
public Party Save() {
   
SqlConnection cn = DB.GetCn();
   
SqlCommand cmd = cn.CreateCommand();
    cmd
.CommandText =
       
"UPDATE Partys SET"
       
+ "nfParPerOwn=@nfParPerOwn,sParTag=@sParTag,ePar=@ePar,sParAFM=@sParAFM,sParDOY=@sParDOY,sParTxt=@sParTxt"
       
+ ",nAudUser=@nAudUser,sAudIp=@sAudIp,dAud=SYSUTCDATETIME()"
       
+ " WHERE nkPar=@nkPar AND rvLoc=@rvLoc"
       
+ ";IF @@ROWCOUNT=1 SELECT CAST(1 AS BIT); ELSE"
       
+ " IF EXISTS(SELECT * FROM Partys WHERE nkPar=@nkPar)"
               
+ " SELECT CAST(0 AS BIT)"
           
+ " ELSE "
               
+ " INSERT Partys ("
               
+ "nfParPerOwn,sParTag,ePar,sParAFM,sParDOY,sParTxt,nAudUser,sAudIP"
               
+ ") OUTPUT CAST(1 AS BIT)"
               
+ " VALUES ("
               
+ "@nfParPerOwn,@sParTag,@ePar,@sParAFM,@sParDOY,@sParTxt,@nAudUser,@sAudIP"
               
+ ")";
    cmd
.Parameters.Add("nkPar", SqlDbType.Int).Value = nkPar;
    cmd
.Parameters.Add("@rvPar", SqlDbType.VarBinary).Value = rvPar;
    cmd
.Parameters.Add("@nfParPerOwn", SqlDbType.Int).Value = nfParPerOwn;
   
if (nfParPerOwn == 0) { cmd.Parameters["@nfParPerOwn"].Value = DBNull.Value; }
    cmd
.Parameters.Add("@sParTag", SqlDbType.NVarChar, 100).Value = sParTag;
    cmd
.Parameters.Add("@ePar", SqlDbType.NChar, 3).Value = ePar;
    cmd
.Parameters.Add("@sParAFM", SqlDbType.NVarChar, 50).Value = sParAFM;
    cmd
.Parameters.Add("@sParDOY", SqlDbType.NVarChar, 100).Value = sParDOY;
    cmd
.Parameters.Add("@sParTxt", SqlDbType.NVarChar, -1).Value = sParTxt;
    cmd
.Parameters.Add("@nAudUser", SqlDbType.Int).Value = UserLib.nkUsr;
    cmd
.Parameters.Add("@sAudIp", SqlDbType.NVarChar, 50).Value = UserLib.sUsrIP;
    bool bOK
= (bool)cmd.ExecuteScalar();
    cmd
.Dispose();
    cn
.Dispose();
   
if (!bOK) sError = "RV";
   
return this;
}
public ErMsgs Validate() {
   
ErMsgs oErs = new ErMsgs();
   
//if (this.nfLocPar == 0) {
   
// oErs.Add("", ErMsg.enSeverity.eError, "nfLocPar", "Enter a value");
   
//}
   
return oErs;
}
public Party LoadNk(int nk) {
   
SqlConnection cn = DB.GetCn();
   
SqlCommand cmd = cn.CreateCommand();
    cmd
.CommandText = "SELECT *"
       
+ ",sfParPerOwn=COALESCE(sPerLNm+' '+sPerFNm)"
       
+ " FROM Partys"
       
+ " LEFT JOIN Persons ON nfParPerOwn=fPerPar"
       
+ " WHERE nkPar=@nk";
    cmd
.Parameters.Add("@nk", SqlDbType.Int).Value = nk;
    bool bOK
= Load(cmd);
    cmd
.Dispose();
    cn
.Dispose();
   
return this;
}
private bool Load(SqlCommand cmd) {
   
SqlDataReader dr = cmd.ExecuteReader();
   
if (dr.HasRows) {
        dr
.Read();
       
ParseDr(dr);
   
} else {
       
Clear();
   
}
    dr
.Close();
    cmd
.Connection.Close();
   
return true;
}
public void ParseDr(SqlDataReader dr) {
   
DataView dvSchema = dr.GetSchemaTable().DefaultView;
    nkPar
= (int)dr["nkPar"];
    rvPar
= (byte[])dr["rvPar"];
   
//nfParPerOwn = (int)(dr.IsDBNull(dr.GetOrdinal("nfParPerOwn")) ? 0 : dr["nfParPerOwn"]);
    nfParPerOwn
= (dr["nfParPerOwn"] == DBNull.Value ? 0 : (int)dr["nfParPerOwn"]);
   
//sfParPerOwn = (string)dr["sfParPerOwn"];
    sfParPerOwn
= (Ut.FieldExists(dvSchema, "sfParPerOwn") ? (string)dr["sfParPerOwn"] : "");
    sParTag
= (string)dr["sParTag"];
    ePar
= (string)dr["ePar"];
    sParAFM
= (string)dr["sParAFM"];
    sParDOY
= (string)dr["sParDOY"];
    sParTxt
= (string)dr["sParTxt"];
    nAudUser
= (int)dr["nAudUser"];
    sAudIp
= (string)dr["sAudIp"];
    dAud
= (DateTime)dr["dAud"];

   
return;
}
public static bool Delete(int nk) {
   
SqlConnection cn = DB.GetCn();
   
SqlCommand cmd = cn.CreateCommand();
    cmd
.CommandText = "DELETE Partys WHERE nkPar=@nk";
    cmd
.Parameters.Add("@nk", SqlDbType.Int).Value = nk;
    cmd
.Dispose();
   
int nRows = cmd.ExecuteNonQuery();
    cn
.Dispose();
   
return (nRows == 1);
}
#endregion
#region Client-server
public void ParseFromJs(string sVals) {
   
string[] aVals = sVals.Split('\t');
   
int nExpected = 8;
   
if (aVals.Length != nExpected) System.Diagnostics.Debug.Fail("Expected: " + nExpected.ToString() + " fields\nReceived: " + aVals.Length.ToString());
   
int nFld = 0;
    nkPar
= int.Parse(aVals[nFld++]);
    rvPar
= Ut.RowVerFrString(aVals[nFld++]);
    nfParPerOwn
= int.Parse(aVals[nFld++]);
    sParTag
= Regex.Replace(aVals[nFld++].Replace(',', ' '), @"\s+-?\s*", " "); //Remove "," "-"
    ePar
= aVals[nFld++];
    sParAFM
= aVals[nFld++];
    sParDOY
= aVals[nFld++];
    sParTxt
= aVals[nFld++];
}
public string ToJson() {
   
StringBuilder sb = new StringBuilder("[");
    sb
.Append(nkPar.ToString());
    sb
.Append("," + Ut.jstr(Ut.RowVerToString(rvPar)));
    sb
.Append("," + nfParPerOwn.ToString());
    sb
.Append("," + Ut.jstr(sfParPerOwn));
    sb
.Append("," + Ut.jstr(sParTag));
    sb
.Append("," + Ut.jstr(ePar));
    sb
.Append("," + Ut.jstr(sParAFM));
    sb
.Append("," + Ut.jstr(sParDOY));
    sb
.Append("," + Ut.jstr(sParTxt));
    sb
.Append("]");
   
return sb.ToString();
}
#endregion

No comments:

Post a Comment