public IActionResult AddVote(AddVoteRequestModel addVote)
        {
            try
            {
                bool   status = false;
                string message;

                AddVoteResponseModel VoteResponse = _voteBusiness.AddVote(addVote);

                if (VoteResponse != null)
                {
                    if (VoteResponse.ErrorResponse.ErrorStatus)
                    {
                        message = VoteResponse.ErrorResponse.Message;
                        return(Ok(new { status, message }));
                    }
                    else
                    {
                        status  = true;
                        message = "Your Votes has Been Successfully Added.";
                        VoteAddResponseModel data = VoteResponse.VoteAdd;
                        return(Ok(new { status, message, data }));
                    }
                }

                message = "Unable to add your Vote";
                return(Ok(new { status, message }));
            }
            catch (Exception e)
            {
                return(BadRequest(new { e.Message }));
            }
        }
        /// <summary>
        /// It Add a vote to the candidate.
        /// </summary>
        /// <param name="addVote">CandidateId and EvmVote or PostalVote</param>
        /// <returns>Add Vote Response Model</returns>
        public AddVoteResponseModel AddVote(AddVoteRequestModel addVote)
        {
            try
            {
                SqlDataReader        reader;
                int                  statusCode, CandidatePresent;
                string               errorMsg     = "";
                bool                 errorFlag    = false;
                AddVoteResponseModel VoteResponse = null;

                using (SqlConnection connection = new SqlConnection(sqlConnection))
                {
                    SqlCommand sqlCommand = new SqlCommand("spVotes", connection)
                    {
                        CommandType = System.Data.CommandType.StoredProcedure
                    };
                    sqlCommand.Parameters.AddWithValue("@VotesId", -1);
                    sqlCommand.Parameters.AddWithValue("@CandidateId", addVote.CandidateId);
                    sqlCommand.Parameters.AddWithValue("@EvmVote", addVote.EvmVote);
                    sqlCommand.Parameters.AddWithValue("@PostalVote", addVote.PostalVote);
                    sqlCommand.Parameters.AddWithValue("@ActionType", "Add");

                    SqlParameter CandidatePresentParameter = sqlCommand.Parameters.Add("@CandidatePresentCount", System.Data.SqlDbType.Int);
                    CandidatePresentParameter.Direction = System.Data.ParameterDirection.ReturnValue;

                    SqlParameter cmdExecuteSuccess = sqlCommand.Parameters.Add("@return_value", System.Data.SqlDbType.Int);
                    cmdExecuteSuccess.Direction = System.Data.ParameterDirection.ReturnValue;

                    connection.Open();

                    reader           = sqlCommand.ExecuteReader();
                    CandidatePresent = Convert.ToInt32(sqlCommand.Parameters["@CandidatePresentCount"].Value);
                    statusCode       = Convert.ToInt32(sqlCommand.Parameters["@return_Value"].Value);

                    if (CandidatePresent == -1)
                    {
                        errorFlag = true;
                        errorMsg  = "This Candidate is Not Present";
                    }

                    if (errorFlag)
                    {
                        VoteResponse = new AddVoteResponseModel
                        {
                            ErrorResponse = new ErrorResponseModel
                            {
                                ErrorStatus = errorFlag,
                                Message     = errorMsg
                            }
                        };

                        return(VoteResponse);
                    }

                    if (statusCode == 0)
                    {
                        if (reader.HasRows)
                        {
                            VoteResponse = new AddVoteResponseModel();

                            while (reader.Read())
                            {
                                VoteResponse.VoteAdd = new VoteAddResponseModel
                                {
                                    VotesId     = Convert.ToInt32(reader[0]),
                                    CandidateId = Convert.ToInt32(reader[1]),
                                    EvmVote     = Convert.ToBoolean(reader[2]),
                                    PostalVote  = Convert.ToBoolean(reader[3]),
                                    CreatedAt   = Convert.ToDateTime(reader[4]),
                                    ModifiedAt  = Convert.ToDateTime(reader[5])
                                };

                                VoteResponse.ErrorResponse = new ErrorResponseModel()
                                {
                                    ErrorStatus = false
                                };
                            }
                        }
                    }
                }

                return(VoteResponse);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }
        }