/// <summary>
        /// It Fetch All the Fellowship Candidates from the Database
        /// </summary>
        /// <returns>If Data Fetech Successfully return ResponseData else null or BadRequest</returns>
        public List <FellowshipResponseModel> GetAllFellowshipCandidates()
        {
            try
            {
                List <FellowshipResponseModel> fellowshipCandidates = null;

                using (SqlConnection conn = new SqlConnection(sqlConnectionString))
                {
                    fellowshipCandidates = new List <FellowshipResponseModel>();
                    SqlCommand cmd = new SqlCommand("spGetAllFellowshipCandidates", conn)
                    {
                        CommandType = System.Data.CommandType.StoredProcedure
                    };
                    conn.Open();
                    SqlDataReader dataReader = cmd.ExecuteReader();
                    while (dataReader.Read())
                    {
                        FellowshipResponseModel responseData = new FellowshipResponseModel()
                        {
                            CandidateID            = Convert.ToInt32(dataReader["CandidateID"]),
                            FirstName              = dataReader["FirstName"].ToString(),
                            MiddleName             = dataReader["MiddleName"].ToString(),
                            LastName               = dataReader["LastName"].ToString(),
                            Email                  = dataReader["Email"].ToString(),
                            Degree                 = dataReader["Degree"].ToString(),
                            MobileNumber           = dataReader["MobileNumber"].ToString(),
                            PermanentPincode       = dataReader["PermanentPincode"].ToString(),
                            HiredCity              = dataReader["HiredCity"].ToString(),
                            HiredDate              = Convert.ToDateTime(dataReader["HiredDate"]),
                            HiredLab               = dataReader["HiredLab"].ToString(),
                            Attitude               = dataReader["Attitude"].ToString(),
                            CommunicationRemark    = dataReader["CommunicationRemark"].ToString(),
                            KnowledgeRemark        = dataReader["KnowledgeRemark"].ToString(),
                            AggregateRemark        = dataReader["AggregateRemark"].ToString(),
                            Status                 = dataReader["Status"].ToString(),
                            CreatorStamp           = dataReader["CreatorStamp"].ToString(),
                            CreatorUser            = dataReader["CreatorUser"].ToString(),
                            BirthDate              = dataReader["BirthDate"].ToString(),
                            IsBirthDateVerified    = Convert.ToBoolean(dataReader["IsBirthDateVerified"]),
                            ParentName             = dataReader["ParentName"].ToString(),
                            ParentOccupation       = dataReader["ParentOccupation"].ToString(),
                            ParentsMobileNumber    = dataReader["ParentsMobileNumber"].ToString(),
                            ParentsAnnualSalary    = dataReader["ParentsAnnualSalary"].ToString(),
                            LocalAddress           = dataReader["LocalAddress"].ToString(),
                            PermanentAddress       = dataReader["PermanentAddress"].ToString(),
                            PhotoPath              = dataReader["PhotoPath"].ToString(),
                            JoiningDate            = dataReader["JoiningDate"].ToString(),
                            CandidateStatus        = dataReader["CandidateStatus"].ToString(),
                            PersonalInformation    = dataReader["PersonalInformation"].ToString(),
                            BankInformation        = dataReader["BankInformation"].ToString(),
                            EducationalInformation = dataReader["EducationalInformation"].ToString(),
                            DocumentStatus         = dataReader["DocumentStatus"].ToString(),
                            Remark                 = dataReader["Remark"].ToString(),
                            CreatedDate            = Convert.ToDateTime(dataReader["CreatedDate"]),
                            ModifiedDate           = Convert.ToDateTime(dataReader["ModifiedDate"])
                        };
                        fellowshipCandidates.Add(responseData);
                    }
                    conn.Close();
                }
                return(fellowshipCandidates);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        /// <summary>
        /// It Update Fellowship Candidate Details
        /// </summary>
        /// <param name="candidateID">Candidate ID</param>
        /// <param name="fellowshipUpdate">Update Fellowship Candidate</param>
        /// <returns>If Data Updated Successfully, It return ResponseData else null or Exception</returns>
        public FellowshipResponseModel UpdateSelectedFellowshipCandidate(int candidateID, FellowshipUpdateRequest fellowshipUpdate)
        {
            try
            {
                FellowshipResponseModel responseData = null;
                try
                {
                    using (SqlConnection conn = new SqlConnection(sqlConnectionString))
                    {
                        SqlCommand cmd = new SqlCommand("spUpdateFellowshipCandidate", conn)
                        {
                            CommandType = System.Data.CommandType.StoredProcedure
                        };
                        cmd.Parameters.AddWithValue("@CandidateID", candidateID);
                        cmd.Parameters.AddWithValue("@BirthDate", fellowshipUpdate.BirthDate);
                        cmd.Parameters.AddWithValue("@IsBirthDateVerified", fellowshipUpdate.IsBirthDateVerified);
                        cmd.Parameters.AddWithValue("@ParentName", fellowshipUpdate.ParentName);
                        cmd.Parameters.AddWithValue("@ParentOccupation", fellowshipUpdate.ParentOccupation);
                        cmd.Parameters.AddWithValue("@ParentsMobileNumber", fellowshipUpdate.ParentsMobileNumber);
                        cmd.Parameters.AddWithValue("@ParentsAnnualSalary", fellowshipUpdate.ParentsAnnualSalary);
                        cmd.Parameters.AddWithValue("@LocalAddress", fellowshipUpdate.LocalAddress);
                        cmd.Parameters.AddWithValue("@PermanentAddress", fellowshipUpdate.PermanentAddress);
                        cmd.Parameters.AddWithValue("@PhotoPath", fellowshipUpdate.PhotoPath);
                        cmd.Parameters.AddWithValue("@JoiningDate", fellowshipUpdate.JoiningDate);
                        cmd.Parameters.AddWithValue("@CandidateStatus", fellowshipUpdate.CandidateStatus);
                        cmd.Parameters.AddWithValue("@PersonalInformation", fellowshipUpdate.PersonalInformation);
                        cmd.Parameters.AddWithValue("@BankInformation", fellowshipUpdate.BankInformation);
                        cmd.Parameters.AddWithValue("@EducationalInformation", fellowshipUpdate.EducationalInformation);
                        cmd.Parameters.AddWithValue("@DocumentStatus", fellowshipUpdate.DocumentStatus);
                        cmd.Parameters.AddWithValue("@Remark", fellowshipUpdate.Remark);
                        cmd.Parameters.AddWithValue("@ModifiedDate", DateTime.Now);

                        conn.Open();
                        SqlDataReader dataReader = cmd.ExecuteReader();
                        while (dataReader.Read())
                        {
                            responseData = new FellowshipResponseModel()
                            {
                                CandidateID            = Convert.ToInt32(dataReader["CandidateID"].ToString()),
                                FirstName              = dataReader["FirstName"].ToString(),
                                MiddleName             = dataReader["MiddleName"].ToString(),
                                LastName               = dataReader["LastName"].ToString(),
                                Email                  = dataReader["Email"].ToString(),
                                Degree                 = dataReader["Degree"].ToString(),
                                MobileNumber           = dataReader["MobileNumber"].ToString(),
                                PermanentPincode       = dataReader["PermanentPincode"].ToString(),
                                HiredCity              = dataReader["HiredCity"].ToString(),
                                HiredDate              = Convert.ToDateTime(dataReader["HiredDate"]),
                                HiredLab               = dataReader["HiredLab"].ToString(),
                                Attitude               = dataReader["Attitude"].ToString(),
                                CommunicationRemark    = dataReader["CommunicationRemark"].ToString(),
                                KnowledgeRemark        = dataReader["KnowledgeRemark"].ToString(),
                                AggregateRemark        = dataReader["AggregateRemark"].ToString(),
                                Status                 = dataReader["Status"].ToString(),
                                BirthDate              = dataReader["BirthDate"].ToString(),
                                IsBirthDateVerified    = Convert.ToBoolean(dataReader["IsBirthDateVerified"]),
                                ParentName             = dataReader["ParentName"].ToString(),
                                ParentOccupation       = dataReader["ParentOccupation"].ToString(),
                                ParentsMobileNumber    = dataReader["ParentsMobileNumber"].ToString(),
                                ParentsAnnualSalary    = dataReader["ParentsAnnualSalary"].ToString(),
                                LocalAddress           = dataReader["LocalAddress"].ToString(),
                                PermanentAddress       = dataReader["PermanentAddress"].ToString(),
                                PhotoPath              = dataReader["PhotoPath"].ToString(),
                                JoiningDate            = dataReader["JoiningDate"].ToString(),
                                CandidateStatus        = dataReader["CandidateStatus"].ToString(),
                                PersonalInformation    = dataReader["PersonalInformation"].ToString(),
                                BankInformation        = dataReader["BankInformation"].ToString(),
                                EducationalInformation = dataReader["EducationalInformation"].ToString(),
                                DocumentStatus         = dataReader["DocumentStatus"].ToString(),
                                Remark                 = dataReader["Remark"].ToString(),
                                CreatorStamp           = dataReader["CreatorStamp"].ToString(),
                                CreatorUser            = dataReader["CreatorUser"].ToString(),
                                CreatedDate            = Convert.ToDateTime(dataReader["CreatedDate"]),
                                ModifiedDate           = Convert.ToDateTime(dataReader["ModifiedDate"])
                            };
                        }
                        conn.Close();
                    }
                    return(responseData);
                }
                catch
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }