try
{
using (var transaction = db.Database.BeginTransaction())
{
var appraisalDB = db.Appraisals.Where(p => p.AppraisalId == appraisalsVM.AppraisalId).SingleOrDefault();
appraisalsVM.BindModelTo(appraisalDB);
appraisalDB.ManagersManagerName = appraisalsVM.LoggedInUser.EmployeeName;
appraisalDB.ManagersManagerSignDate = DateTime.Now;
appraisalDB.ModifiedOn = DateTime.Now;
db.SaveChanges();
// Call archival procedure
var connectionString = db.Database.GetDbConnection().ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("[dbo].[proc_Appraisal_Archive]", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@AppraisalID", appraisalsVM.AppraisalId);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
conn.Close();
}
// Commit transaction if all actions are successful
transaction.Commit();
return Ok(new { status = "Success" });
}
}
catch (Exception ex)
{
// Rollback transaction and log error
if (transaction != null)
{
transaction.Rollback();
}
var data = new TblErrors
{
ErrorMessage = ex.Message,
ErrorNumber = ex.HResult,
ErrorProcedure = "proc_Appraisal_Archive",
ErrorLine = 525
};
this.SaveErrors(data);
return Ok(new { status = "Failed" });
}
------------------above code modified in case in below code any error in below procedure falied then need to roolback first transaction also.
below is the old code
public IActionResult SignManagersManagerAppraisal(vmAppraisals appraisalsVM)
{
using (Performance_ManagmentContextDbo db = new Performance_ManagmentContextDbo())
{
try
{
var appraisalDB = db.Appraisals.Where(p => p.AppraisalId == appraisalsVM.AppraisalId).SingleOrDefault();
appraisalsVM.BindModelTo(appraisalDB);
appraisalDB.ManagersManagerName = appraisalsVM.LoggedInUser.EmployeeName;
appraisalDB.ManagersManagerSignDate = DateTime.Now;
appraisalDB.ModifiedOn = DateTime.Now;
db.SaveChanges();
//call archival procedure
var connectionString = db.Database.GetDbConnection().ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand("[dbo].[proc_Appraisal_Archive]", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@AppraisalID", appraisalsVM.AppraisalId);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
conn.Close();
}
return Ok(new { status = "Success" });
}
catch(Exception ex)
{
var data = new TblErrors();
data.ErrorMessage = ex.Message;
data.ErrorNumber = 0;
data.ErrorProcedure = "proc_Appraisal_Archive";
data.ErrorLine = 525;
this.SaveErrors(data);
return Ok(new { status = "Failed" });
}
No comments:
Post a Comment