Thursday, February 21, 2008

working with Entity Class in C#

I got a chance to work with OOPS concept Entity class
Entity class

public class EmailTemplate
{
#region Properties
private long _Id;
///
/// Gets/Sets the flag for Id
///

public long Id
{
get { return _Id; }
set { _Id = value; }
}
private string _TemplateName;
///
/// Gets/Sets the flag for TemplateName
///

public string TemplateName
{
get { return _TemplateName; }
set { _TemplateName = value; }
}

private string _Template;
///
/// Gets/Sets the flag for Template
///

public string Template
{
get { return _Template; }
set { _Template = value; }
}


private string _Site;
///
/// Gets/Sets the flag for Site
///

public string Site
{
get { return _Site; }
set { _Site = value; }
}

///
/// Gets/Sets the flag for IsManageable
///

private bool _IsManageable = true ;
public bool IsManageable
{
get { return _IsManageable; }
set { _IsManageable = value; }
}

///
/// Gets/Sets the flag for IsArchived
///

private bool _IsArchived = false ;
public bool IsArchived
{
get { return _IsArchived; }
set { _IsArchived = value; }
}

///
/// Gets the flag for IsDeleted
///

private bool _IsDeleted = false ;
public bool IsDeleted
{
get { return _IsDeleted; }
}


///
/// Gets/Sets the flag for IsPublished
///

private bool _IsDeployed = true ;
public bool IsDeployed
{
get { return _IsDeployed; }
set { _IsDeployed = value; }
}


#endregion

}




Business Layer

EmailTemplateDL dbLayer = new EmailTemplateDL();
EmailEntity.EmailTemplate emailTemplateEntity = new Palladium.Custom.Entities.EmailTemplate.EmailTemplate();
Helper.EmailTemplate helper = new Palladium.Custom.Helpers.EmailTemplate.EmailTemplate();


///
/// Retrievs All Templates
///

/// Table of Templates
public DataTable GetAllTemplates(EmailEntity.EmailTemplate objEntity)
{
DataTable dtTemplates = null;
Guid userGUID = helper.getUserGUID(); // dbLayer.getUserGUID();
string userName = "user"; // ToDo : get the user

if (!string.IsNullOrEmpty(objEntity.Site) && userGUID != Guid.Empty && !string.IsNullOrEmpty(userName))
{
// Call Get All method of the Data Access Layer
dtTemplates = dbLayer.GetAllTemplate(objEntity.Site, userGUID, userName);
}
return dtTemplates;
}





///
/// save records
///

///
///
public bool SaveTemplate( EmailEntity.EmailTemplate objEntity)
{
bool isSaved = false;
Guid userGUID = helper.getUserGUID() ; // dbLayer.getUserGUID();
string userName = "user"; // ToDo : get the user
if (!string.IsNullOrEmpty(objEntity.TemplateName) && !string.IsNullOrEmpty(objEntity.Template) && userGUID != Guid.Empty && !string.IsNullOrEmpty(objEntity.Site))
{
if (objEntity.Id != null && objEntity.Id > 0)
{
isSaved = dbLayer.UpdateTemplate(objEntity.Site, objEntity.Id, objEntity.TemplateName, objEntity.Template, objEntity.IsManageable, objEntity.IsArchived, userGUID, userName);
}
else
{
isSaved = dbLayer.InsertTemplate(objEntity.Site, objEntity.TemplateName, objEntity.Template, objEntity.IsManageable, userGUID, userName);
}
}
return isSaved;
}
///
/// mark isdeleted = 1 for records
///

///
///
public bool DeleteTemplate(EmailEntity.EmailTemplate objEntity)
{
bool isDeleted = false;
Guid userGUID = helper.getUserGUID(); // dbLayer.getUserGUID();
string userName = "user"; // ToDo : get the user

if (objEntity.Id != null && objEntity.Id > 0 && userGUID != Guid.Empty && !string.IsNullOrEmpty(objEntity.Site) && !string.IsNullOrEmpty(userName))
{
isDeleted = dbLayer.DeleteTemplate(objEntity.Site, objEntity.Id, userGUID, userName);
}
return isDeleted;
}


///
/// get the data by passing template name
///

///
///
public EmailEntity.EmailTemplate GetDatabyTemplateName(EmailEntity.EmailTemplate objEntity)
{
Guid userGUID = helper.getUserGUID(); // dbLayer.getUserGUID();
string userName = "user"; // ToDo : get the user
if (!string.IsNullOrEmpty(objEntity.TemplateName) && userGUID != Guid.Empty && !string.IsNullOrEmpty(objEntity.Site) && !string.IsNullOrEmpty(userName))
{
return dbLayer.GetDatabyTemplateName(objEntity.Site, objEntity.TemplateName, userGUID, userName);
}
else
{
return null;
}

}

///
/// To get the data by passing id
///

///
/// return entity object
public EmailEntity.EmailTemplate GetDatabyId(EmailEntity.EmailTemplate objEntity)
{
Guid userGUID = helper.getUserGUID(); // dbLayer.getUserGUID();
string userName = "user"; // ToDo : get the user
if (objEntity.Id != null && objEntity.Id > 0 && userGUID != Guid.Empty && !string.IsNullOrEmpty(objEntity.Site) && !string.IsNullOrEmpty(userName))
{
return dbLayer.GetDatabyId(objEntity.Site ,objEntity.Id,userGUID,userName);
}
else
{
return null;
}

}




Database Layer



public class EmailTemplateDL
{


///
/// insert records
///

///
///
///
///
///
///
///
public bool InsertTemplate(string site,string templateName, string template, bool isManageable, Guid createdById,string createdByUser)
{
bool isSaved = false;
if (!string.IsNullOrEmpty(site) && !string.IsNullOrEmpty(templateName) && !string.IsNullOrEmpty(template) && createdById != Guid.Empty && !string.IsNullOrEmpty(createdByUser) )
{
string spName = "PalEmailTemplatesCreate";
object[] objParameters = new object[6];
objParameters[0] = site ;
objParameters[1] = templateName;
objParameters[2] = template;
objParameters[3] = isManageable;
objParameters[4] = createdById;
objParameters[5] = createdByUser; // ToDo : get user name from helper class
StoredProcedure sp = new StoredProcedure();
int recordsaffected = -3;
recordsaffected = sp.ExecuteNonQuery(spName, objParameters);

// checking for -1 since the strored procdure is returning -1 for successfull transaction
// ToDo: change the stored procedure such that it returns 1 on success
if (recordsaffected > 0 || recordsaffected == -1)
{
isSaved = true;
}
sp = null;
}
return isSaved;
}

///
/// update the records
///

///
///
///
///
///
///
///
///
///
public bool UpdateTemplate(string site, long id, string templateName, string template, bool isManageable, bool isArchived, Guid modifiedById,string modifiedByUser)
{
bool isSaved = false;
if (!string.IsNullOrEmpty(site) && id != null && !string.IsNullOrEmpty(templateName) && modifiedById != Guid.Empty && !string.IsNullOrEmpty(modifiedByUser))
{
string spName = "PalEmailTemplatesUpdate";
object[] objParameters = new object[8];
objParameters[0] = site ;
objParameters[1] = id;
objParameters[2] = templateName;
objParameters[3] = template;
objParameters[4] = isManageable;
objParameters[5] = isArchived;
objParameters[6] = modifiedById;
objParameters[7] = modifiedByUser;
StoredProcedure sp = new StoredProcedure();
sp.ExecuteNonQuery(spName, objParameters);
int recordsaffected = -3;
recordsaffected = sp.ExecuteNonQuery(spName, objParameters);
// checking for -1 since the strored procdure is returning -1 for successfull transaction
// ToDo: change the stored procedure such that it returns 1 on success
if (recordsaffected > 0 || recordsaffected == -1)
{
isSaved = true;
}
sp = null;
}
return isSaved;
}




///
/// To delete records
///

///
///
///
///
///
public bool DeleteTemplate(string site ,long id, Guid modifiedById, string modifiedByUser)
{
bool isDeleted = false;
if (!string.IsNullOrEmpty(site) && id != null && modifiedById != Guid.Empty && !string.IsNullOrEmpty(modifiedByUser))
{
string spName = "PalEmailTemplatesDelete";
object[] objParameters = new object[4];
objParameters[0] = site;
objParameters[1] = id;
objParameters[2] = modifiedById;
objParameters[3] = modifiedByUser ;
StoredProcedure sp = new StoredProcedure();
int recordsaffected = -3;
// checking for -1 since the strored procdure is returning -1 for successfull transaction
// ToDo: change the stored procedure such that it returns 1 on success
recordsaffected = sp.ExecuteNonQuery(spName, objParameters);
if (recordsaffected > 0 || recordsaffected == -1)
{
isDeleted = true;
}
sp = null;
}
return isDeleted;
}

///
/// Retrievs all email template, marked as not deleted
///

/// Data table
public DataTable GetAllTemplate(string site,Guid lastModifiedByID,string lastModifiedUser)
{
DataTable returnData = null;

string spName = "PalEmailTemplatesList";

// Build the storedprocedure input parameters
object[] spValues = new object[3];
spValues[0] = site;
spValues[1] = lastModifiedByID;
spValues[2] = lastModifiedUser;

//call datalayer method to update the database
Palladium.Data.Database.StoredProcedure sp = new StoredProcedure();
DataSet dsTemplates = sp.ExecuteDataset(spName, spValues);
if (dsTemplates != null && dsTemplates.Tables.Count > 0)
{
returnData = dsTemplates.Tables[0];
}
sp = null;

return returnData;
}

///
/// Retrieves the value of the name
///

///
///
/// Value of the property
public string GetTemplate(string templateName)
{
string returnData = string.Empty;
if (!string.IsNullOrEmpty(templateName))
{
IDataReader dr = null;
string spName = "PalEmailTemplatesTemplateNameOutput";
object[] objParameters = new object[2];
objParameters[0] = templateName;
StoredProcedure sp = new StoredProcedure();
dr = sp.ExecuteReader(spName, objParameters);
if (dr != null)
{
if (dr.Read())
{
if (Convert.ToBoolean(dr["IsDeleted"]) == false)
{
returnData = dr["Template"] as string;
}
}
dr.Dispose();
dr = null;
}
sp = null;
}
return returnData;
}


///
/// Get the data by passing template name
///

///
///
///
///
///
public EmailEntity.EmailTemplate GetDatabyTemplateName(string site, string templateName, Guid lastModifiedByID, string lastModifiedUser)
{
EmailEntity.EmailTemplate EmailEntity = new Palladium.Custom.Entities.EmailTemplate.EmailTemplate();
if (!string.IsNullOrEmpty(templateName) && lastModifiedByID != Guid.Empty && !string.IsNullOrEmpty(site) && !string.IsNullOrEmpty(lastModifiedUser))
{
StoredProcedure sp = null;
try
{
sp = new StoredProcedure();
string spName = "PalEmailTemplatesTemplateNameOutput";
object[] objParameters = new object[9];
objParameters[0] = site; //site
objParameters[1] = DBNull.Value; // id
objParameters[2] = templateName; // @TemplateName
objParameters[3] = DBNull.Value; // @Template
objParameters[4] = DBNull.Value; // @IsManageable
objParameters[5] = DBNull.Value; // @IsArchived
objParameters[6] = DBNull.Value; // @@IsDeployed
objParameters[7] = lastModifiedByID; // @@LastModifiedById
objParameters[8] = lastModifiedUser; // @LastModifiedByUserName

Hashtable htOutputParameters = null;
htOutputParameters = sp.ExecuteStoredProcedureGetOutputParameters(spName, objParameters);
if (htOutputParameters != null)
{
int outputParametersCount = htOutputParameters.Count;
if (outputParametersCount > 0)
{
string[] keys = new string[htOutputParameters.Keys.Count];
htOutputParameters.Keys.CopyTo(keys, 0);
for (int index = 0; index < outputParametersCount; index++)
{
object keyValue = htOutputParameters[keys[index]];

if (keys[index].Substring(1).ToLower() == "id")
{
long id = 0;
try
{
long.TryParse(keyValue.ToString(), out id);
}
catch { }
if( id > 0 )
EmailEntity.Id = id;
}
else if (keys[index].Substring(1).ToLower() == "template")
{
EmailEntity.Template = keyValue.ToString();
}
else if (keys[index].Substring(1).ToLower() == "ismanageable")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsManageable = true;
}
else
{
EmailEntity.IsManageable = false;
}
}
else if (keys[index].Substring(1).ToLower() == "isarchived")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsArchived = true;
}
else
{
EmailEntity.IsArchived = false;
}
}
else if (keys[index].Substring(1).ToLower() == "isdeployed")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsDeployed = true;
}
else
{
EmailEntity.IsDeployed = false;
}
}

}
}
htOutputParameters.Clear();
htOutputParameters = null;
}
}
catch (Exception ex)
{
return null;
throw ex;
}
finally
{
if (sp != null)
sp = null;
}
}
else
{
throw new Exception("Not able to set properties");
}
return EmailEntity;
}


///
/// Get data by passing id
///

///
///
///
///
///
public EmailEntity.EmailTemplate GetDatabyId(string site, long id, Guid lastModifiedByID, string lastModifiedUser)
{
EmailEntity.EmailTemplate EmailEntity = new Palladium.Custom.Entities.EmailTemplate.EmailTemplate();
if (!object.Equals(null, id) && id > 0 && lastModifiedByID != Guid.Empty && !string.IsNullOrEmpty(site) && !string.IsNullOrEmpty(lastModifiedUser))
{
StoredProcedure sp = null;
try
{
sp = new StoredProcedure();
string spName = "PalEmailTemplatesIdOutput";
object[] objParameters = new object[9];
objParameters[0] = site; //site
objParameters[1] = id; // id
objParameters[2] = DBNull.Value; // @TemplateName out
objParameters[3] = DBNull.Value; // @Template
objParameters[4] = DBNull.Value; // @IsManageable
objParameters[5] = DBNull.Value; // @IsArchived
objParameters[6] = DBNull.Value; // @@IsDeployed
objParameters[7] = lastModifiedByID; // @@LastModifiedById
objParameters[8] = lastModifiedUser; // @LastModifiedByUserName

Hashtable htOutputParameters = null;
htOutputParameters = sp.ExecuteStoredProcedureGetOutputParameters(spName, objParameters);
if (htOutputParameters != null)
{
int outputParametersCount = htOutputParameters.Count;
if (outputParametersCount > 0)
{
string[] keys = new string[htOutputParameters.Keys.Count];
htOutputParameters.Keys.CopyTo(keys, 0);
for (int index = 0; index < outputParametersCount; index++)
{
object keyValue = htOutputParameters[keys[index]];

if (keys[index].Substring(1).ToLower() == "templatename")
{
EmailEntity.TemplateName = keyValue.ToString();
}
else if (keys[index].Substring(1).ToLower() == "template")
{
EmailEntity.Template = keyValue.ToString();
}
else if (keys[index].Substring(1).ToLower() == "ismanageable")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsManageable = true;
}
else
{
EmailEntity.IsManageable = false;
}
}
else if (keys[index].Substring(1).ToLower() == "isarchived")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsArchived = true;
}
else
{
EmailEntity.IsArchived = false;
}
}
else if (keys[index].Substring(1).ToLower() == "isdeployed")
{
if (keyValue.ToString().ToLower() == "true")
{
EmailEntity.IsDeployed = true;
}
else
{
EmailEntity.IsDeployed = false;
}
}

}
}
htOutputParameters.Clear();
htOutputParameters = null;
}
}
catch (Exception ex)
{
return null;
throw ex;
}
finally
{
if (sp != null)
sp = null;
}
}
else
{
throw new Exception("Not able to set properties");
}
return EmailEntity;
}