public Guid UpdateGroupedText(GroupedTextDTO groupedTextDTO)
        {
            string spName = "apt_code.SmsAppointmentService.updateTextTemplate";

            try
            {
                using (var connection = m_providerFactory.CreateConnection())
                {
                    var oracleParameters = GroupTemplateQueryParamHelper.GetGroupTemplateUpdateQueryParams(groupedTextDTO);
                    var newGuid          = SaveAndReturnPK(spName, "l_newtextTemplateGUID", oracleParameters, connection);
                    return(newGuid);
                }
            }
            catch (Oracle.ManagedDataAccess.Client.OracleException ex)
            {
                s_log.ErrorException("UpdateGroupedText (Error from Oracle)", ex);
                throw new DBOperationException(ex.Message, ex.Number, DBExceptionScenarios.OracleExceptionOccured, ex);
            }
            catch (DBOperationException e)
            {
                s_log.WarnException("Error Occured in UpdateGroupedText", e);
                throw;
            }
            catch (Exception ex)
            {
                s_log.ErrorException("UpdateGroupedText Fails", ex);
                throw new DBOperationException(ex.Message, DBExceptionScenarios.ExceptionOccured, ex);
            }
        }
        public List <GroupedTextDTO> SelectGroupedTextsOn(long?departmentID, string searchTerm, bool isActive, bool ishospitalOnly, long hospitalId)
        {
            const string spName = "apt_code.SmsAppointmentService.searchTextTemplate";

            try
            {
                using (var connection = m_providerFactory.CreateConnection())
                {
                    var oracleparams = GroupTemplateQueryParamHelper.GetGroupTemplateBySearchParams(departmentID, searchTerm, isActive, ishospitalOnly, hospitalId);

                    var resultSet = connection.Query(spName, oracleparams, commandType: CommandType.StoredProcedure);
                    if (resultSet == null)
                    {
                        s_log.Error("Search  Grouped Template Set returned empty or null result.");
                        throw new DBOperationException("Search  Grouped Template returned empty or null result.", GlobalOptions.DBExceptionScenarios.DBReturnedEmptyOrNullDataSet);
                    }

                    var groupedTextDTOs = new List <GroupedTextDTO>();
                    foreach (var result in resultSet)
                    {
                        var resultDictionary = result as IDictionary <string, object>;
                        groupedTextDTOs.Add(MapToGroupedTextDTO(result));
                    }
                    return(groupedTextDTOs);
                }
            }
            catch (Oracle.ManagedDataAccess.Client.OracleException ex)
            {
                s_log.ErrorException("Search grouped template Fails(Error from Oracle)", ex);
                throw new DBOperationException(ex.Message, ex.Number, DBExceptionScenarios.OracleExceptionOccured, ex);
            }
            catch (DBOperationException e)
            {
                s_log.WarnException("Error Occured in Search grouped template", e);
                throw;
            }
            catch (Exception ex)
            {
                s_log.ErrorException("Search grouped template Fails", ex);
                throw new DBOperationException(ex.Message, DBExceptionScenarios.ExceptionOccured, ex);
            }
        }
        public GroupedTextDTO SelectAGroupedTextBy(Guid tempalteGuid)
        {
            const string spName = "apt_code.SmsAppointmentService.getTextTemplateByGuid";

            try
            {
                using (var connection = m_providerFactory.CreateConnection())
                {
                    var oracleparams = GroupTemplateQueryParamHelper.GetGroupTemplateByIdQueryParams(tempalteGuid);

                    var resultSet = connection.Query(spName, oracleparams, commandType: CommandType.StoredProcedure);
                    if (resultSet == null)
                    {
                        s_log.Error("Select GroupedText By Id returned empty or null result.");
                        throw new DBOperationException("SelectAGroupedTextBy returned empty or null result.", GlobalOptions.DBExceptionScenarios.DBReturnedEmptyOrNullDataSet);
                    }

                    var groupedTextDTOs = new List <GroupedTextDTO>();
                    foreach (var result in resultSet)
                    {
                        var resultDictionary = result as IDictionary <string, object>;
                        groupedTextDTOs.Add(MapToGroupedTextDTO(result));
                    }
                    return(groupedTextDTOs.FirstOrDefault());
                }
            }
            catch (Oracle.ManagedDataAccess.Client.OracleException ex)
            {
                s_log.ErrorException("SelectTagBy(Guid TemplateId) Fails(Error from Oracle)", ex);
                throw new DBOperationException(ex.Message, ex.Number, DBExceptionScenarios.OracleExceptionOccured, ex);
            }
            catch (DBOperationException e)
            {
                s_log.WarnException("Error Occured in SelectByTemplate Guid )", e);
                throw;
            }
            catch (Exception ex)
            {
                s_log.ErrorException("Select By(Template Guid) Fails", ex);
                throw new DBOperationException(ex.Message, DBExceptionScenarios.ExceptionOccured, ex);
            }
        }