module Effective class CpdMailer < EffectiveCpd.parent_mailer_class include EffectiveMailer include EffectiveEmailTemplatesMailer if EffectiveCpd.use_effective_email_templates # CPD Audit def cpd_audit_opened(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Opened', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_conflicted(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Conflicted', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end def cpd_audit_conflict_resolved(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Conflict Resolved', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_exemption_request(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Exemption Request', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end def cpd_audit_exemption_denied(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Exemption Denied', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_exemption_granted(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Exemption Granted', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_extension_request(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Extension Request', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end def cpd_audit_extension_denied(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Extension Denied', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_extension_granted(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Extension Granted', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_submitted(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Submitted', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end def cpd_audit_missing_info(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Missing Info', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_reviewed(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Reviewed', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end def cpd_audit_closed(resource, opts = {}) raise('expected an EffectiveCpd.CpdAudit') unless resource.kind_of?(EffectiveCpd.CpdAudit) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_url(resource)) @cpd_audit = resource subject = subject_for(__method__, 'CPD Audit Closed', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end # CPD Audit Review def cpd_audit_review_opened(resource, opts = {}) raise('expected an EffectiveCpd.CpdAuditReview') unless resource.kind_of?(EffectiveCpd.CpdAuditReview) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_review_url(resource)) @cpd_audit_review = resource subject = subject_for(__method__, 'CPD Audit Review Opened', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_review_ready(resource, opts = {}) raise('expected an EffectiveCpd.CpdAuditReview') unless resource.kind_of?(EffectiveCpd.CpdAuditReview) @assigns = assigns_for(resource).merge(url: effective_cpd.cpd_audit_review_url(resource)) @cpd_audit_review = resource subject = subject_for(__method__, 'CPD Audit Review Ready', resource, opts) headers = headers_for(resource, opts) mail(to: resource.user.email, subject: subject, **headers) end def cpd_audit_review_submitted(resource, opts = {}) raise('expected an EffectiveCpd.CpdAuditReview') unless resource.kind_of?(EffectiveCpd.CpdAuditReview) @assigns = assigns_for(resource).merge(url: effective_cpd.edit_admin_cpd_audit_url(resource.cpd_audit)) @cpd_audit_review = resource subject = subject_for(__method__, 'CPD Audit Review Submitted', resource, opts) headers = headers_for(resource, opts) mail(to: mailer_admin, subject: subject, **headers) end protected def assigns_for(resource) unless resource.kind_of?(EffectiveCpd.CpdAudit) || resource.kind_of?(EffectiveCpd.CpdAuditReview) raise('expected an EffectiveCpd.CpdAudit or EffectiveCpd.CpdAuditReview') end @cpd_audit = (resource.kind_of?(EffectiveCpd.CpdAudit) ? resource : resource.cpd_audit) @cpd_audit_review = (resource if resource.kind_of?(EffectiveCpd.CpdAuditReview)) @auditee = @cpd_audit.user @reviewer = @cpd_audit_review.user if @cpd_audit_review.present? audit_assigns = { audit: { title: @cpd_audit.to_s, level: @cpd_audit.cpd_audit_level.to_s, determination: @cpd_audit.determination.to_s, missing_info_reason: @cpd_audit.missing_info_reason.to_s }, auditee: { name: @cpd_audit.name, email: (@cpd_audit.user.email unless @cpd_audit.anonymous?).to_s } } review_assigns = if @cpd_audit_review.present? { review: { title: @cpd_audit_review.to_s, recommendation: @cpd_audit_review.recommendation.to_s }, reviewer: { name: @cpd_audit_review.name, email: (@cpd_audit_review.user.email unless @cpd_audit_review.anonymous?).to_s } } end audit_assigns.merge(review_assigns || {}) end end end