public class ContactController : BaseApiController { #region ===[ Private Members ]============================================================= private readonly IUnitOfWork _unitOfWork; #endregion #region ===[ Constructor ]================================================================= /// <summary> /// Initialize ContactController by injecting an object type of IUnitOfWork /// </summary> public ContactController(IUnitOfWork unitOfWork) { this._unitOfWork = unitOfWork; } #endregion #region ===[ Public Methods ]============================================================== [HttpGet] public async Task<ApiResponse<List<Contact>>> GetAll() { var apiResponse = new ApiResponse<List<Contact>>(); try { var data = await _unitOfWork.Contacts.GetAllAsync(); apiResponse.Success = true; apiResponse.Result = data.ToList(); } catch (SqlException ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("SQL Exception:", ex); } catch (Exception ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("Exception:", ex); } return apiResponse; } [HttpGet("{id}")] public async Task<ApiResponse<Contact>> GetById(int id) { var apiResponse = new ApiResponse<Contact>(); try { var data = await _unitOfWork.Contacts.GetByIdAsync(id); apiResponse.Success = true; apiResponse.Result = data; } catch (SqlException ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("SQL Exception:", ex); } catch (Exception ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("Exception:", ex); } return apiResponse; } [HttpPost] public async Task<ApiResponse<string>> Add(Contact contact) { var apiResponse = new ApiResponse<string>(); try { var data = await _unitOfWork.Contacts.AddAsync(contact); apiResponse.Success = true; apiResponse.Result = data; } catch (SqlException ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("SQL Exception:", ex); } catch (Exception ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("Exception:", ex); } return apiResponse; } [HttpPut] public async Task<ApiResponse<string>> Update(Contact contact) { var apiResponse = new ApiResponse<string>(); try { var data = await _unitOfWork.Contacts.UpdateAsync(contact); apiResponse.Success = true; apiResponse.Result = data; } catch (SqlException ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("SQL Exception:", ex); } catch (Exception ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("Exception:", ex); } return apiResponse; } [HttpDelete] public async Task<ApiResponse<string>> Delete(int id) { var apiResponse = new ApiResponse<string>(); try { var data = await _unitOfWork.Contacts.DeleteAsync(id); apiResponse.Success = true; apiResponse.Result = data; } catch (SqlException ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("SQL Exception:", ex); } catch (Exception ex) { apiResponse.Success = false; apiResponse.Message = ex.Message; Logger.Instance.Error("Exception:", ex); } return apiResponse; } #endregion }