The following is the code in UI, BLL and DAL. BLL needs to handle the exception if there is any issue in the executenonquery of DAL and show the user with a generic message. We are using Elmah for error handling.Could anyone please suggest how to handle the exception and show a generic message page(like error 500) to the user.
Controller
refNo = _formServiceWorker.SubmitFormData(formData, isFinalized);
Business Logic Layer:
public string SubmitFormData(GenericFormData formData, bool isFinalized)
{
var submissionHeaderDTO = new SubmissionHeaderDTO();
submissionHeaderDTO = SubmissionHeader(formData.FormId, submissionHeaderVariablesDTO);
var formFieldDataList = GetFormFieldData(formData, submissionHeaderDTO);
if (formFieldDataList.Count() > 0)
{
this._formDataService.DeleteFormData(submissionHeaderDTO.SubmissionId); // calls Data Access Layer
foreach (var formField in formFieldDataList)
{
this._formDataService.SubmitFormData(formField); //Calls Data Access Layer
}
}
}
return submissionHeaderDTO.SubmitSequence;
}
Data Access Layer
public SubmissionHeaderDTO GetRefNo(SubmissionHeaderVariablesDTO requestVariables)
{
using(var sqlConn = new SqlConnection(Configuration.DBConnection))
{
sqlConn.Open();
using (var sqlcmd = new SqlCommand("usp_testSubmissionHeaderInsert", sqlConn))
{
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@FormId", SqlDbType.UniqueIdentifier).Value = requestVariables.FormId;
SqlParameter outputSubmissionSequence = new SqlParameter("@SubmitSequence", SqlDbType.NVarChar, 30)
{
Direction = ParameterDirection.Output
};
SqlParameter outputFormGuid = new SqlParameter("@FormIdGuid", SqlDbType.UniqueIdentifier)
{
Direction = ParameterDirection.Output
};
sqlcmd.Parameters.Add(outputSubmissionSequence);
sqlcmd.Parameters.Add(outputFormGuid);
sqlcmd.ExecuteNonQuery();
var submissionHeaderDto = new SubmissionHeaderDTO()
{
SubmissionId = (Guid)outputSubmissionId.Value,
SubmitSequence = outputSubmissionSequence.Value.ToString(),
FormId = (Guid)outputFormGuid.Value
};
return submissionHeaderDto;
}
}
}