diff --git a/.env.example b/.env.example deleted file mode 100644 index e60e932..0000000 --- a/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -PGHOST=db -PGUSER=postgres -PGPASSWORD=changeme diff --git a/.gitignore b/.gitignore index 72f5b65..ebec06a 100644 --- a/.gitignore +++ b/.gitignore @@ -79,4 +79,6 @@ yarn-debug.log* /mssql-data /logo_files -/employer_word_docs \ No newline at end of file +/employer_word_docs +# Ignore application configuration +/config/application.yml diff --git a/Dockerfile b/Dockerfile index 6678345..569c93c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,73 +1,74 @@ -# syntax=docker/dockerfile:1 -# check=error=true +# syntax = docker/dockerfile:1 -# This Dockerfile is designed for production, not development. -# docker build -t my-app . -# docker run -d -p 80:80 -p 443:443 --name my-app -e RAILS_MASTER_KEY= my-app +# 1. Base Stage: Common dependencies +ARG RUBY_VERSION=3.4.8 +FROM ruby:$RUBY_VERSION-slim as base -# Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile -ARG RUBY_VERSION=3.3.9 -FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base - -# Rails app lives here WORKDIR /rails - -# Install base packages -RUN apt-get update -qq && \ - apt-get install --no-install-recommends -y curl libjemalloc2 libvips postgresql-client && \ - rm -rf /var/lib/apt/lists /var/cache/apt/archives - -# Set production environment ENV RAILS_ENV="production" \ BUNDLE_DEPLOYMENT="1" \ BUNDLE_PATH="/usr/local/bundle" \ - BUNDLE_WITHOUT="development" + BUNDLE_WITHOUT="development:test" + # SUPERCRONIC_URL=https://github.com \ + # SUPERCRONIC=supercronic-linux-amd64 \ + # SUPERCRONIC_SHA1SUM=cd48d45327f3f3396734267468f707f43372c2fc -# Throw-away build stage to reduce size of final image -FROM base AS build - -# Install packages needed to build gems +# Install base packages (libvips for Active Storage, curl for healthchecks) RUN apt-get update -qq && \ - apt-get install --no-install-recommends -y build-essential git libpq-dev pkg-config libyaml-dev && \ + apt-get install --no-install-recommends -y \ + curl \ + git \ + libvips \ + freetds-bin \ + freetds-dev \ + libpq-dev \ + libyaml-dev \ + cron \ + libjemalloc2 \ + dos2unix && \ + rm -rf /var/lib/apt/lists /var/cache/apt/archives + +# RUN curl -fsSLO "$SUPERCRONIC_URL" \ +# && echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \ +# && chmod +x "$SUPERCRONIC" \ +# && mv "$SUPERCRONIC" /usr/local/bin/supercronic + +# 2. Build Stage: Gems and Assets +FROM base as build + +# Install packages needed to build gems and precompile assets +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y build-essential pkg-config less && \ rm -rf /var/lib/apt/lists /var/cache/apt/archives # Install application gems +RUN bundle config set --local frozen false COPY Gemfile Gemfile.lock ./ RUN bundle install && \ - rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git && \ - bundle exec bootsnap precompile --gemfile + rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git # Copy application code COPY . . -# Precompile bootsnap code for faster boot times -RUN bundle exec bootsnap precompile app/ lib/ - -# Precompiling assets for production without requiring secret RAILS_MASTER_KEY +# Precompile assets (Tailwind is triggered here via assets:precompile) +# SECRET_KEY_BASE_DUMMY allows precompilation without real secrets RUN SECRET_KEY_BASE_DUMMY=1 ./bin/rails assets:precompile - -# Final stage for app image +# 3. Final Stage: Lean Runtime FROM base -# Copy built artifacts: gems, application -COPY --from=build "${BUNDLE_PATH}" "${BUNDLE_PATH}" +# Copy built artifacts: gems and precompiled assets +COPY --from=build /usr/local/bundle /usr/local/bundle COPY --from=build /rails /rails -# Run and own only the runtime files as a non-root user for security -RUN groupadd --system --gid 1000 rails && \ - useradd rails --uid 1000 --gid 1000 --create-home --shell /bin/bash && \ - chown -R rails:rails db log storage tmp -USER 1000:1000 +# Run as a non-privileged user for security +RUN useradd -ms /bin/bash rails +RUN chown -R rails:rails /rails +USER rails:rails # Entrypoint prepares the database. ENTRYPOINT ["/rails/bin/docker-entrypoint"] -HEALTHCHECK --interval=15s --timeout=3s --start-period=0s --start-interval=5s --retries=3 \ - CMD curl -f http://localhost:3000/up || exit 1 -# Start the server by default, this can be overwritten at runtime -EXPOSE 3000 - -# The default Rails Dockerfile uses `./bin/rails server`, but when using Puma, -# they recommend using bundle exec puma. ref: https://github.com/puma/puma#rails +# Start the server +EXPOSE 3002 CMD ["bundle", "exec", "puma", "-C", "config/puma.rb"] diff --git a/Gemfile b/Gemfile index c74854c..70b345d 100644 --- a/Gemfile +++ b/Gemfile @@ -89,7 +89,11 @@ gem 'pdf-reader' gem 'rails_icons' gem 'fastimage' gem 'rubyzip', require: 'zip' -gem "solid_queue" +# gem "solid_queue" +gem 'delayed_job_active_record' +gem 'daemons' gem 'image_processing' +gem "ruby-vips" gem 'whenever', require: false -gem 'amatch' \ No newline at end of file +gem 'amatch' +gem 'figaro' \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index 2bd7965..e386793 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -78,7 +78,7 @@ GEM minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) - addressable (2.8.9) + addressable (2.9.0) public_suffix (>= 2.0.2, < 8.0) afm (1.0.0) amatch (0.6.0) @@ -88,9 +88,9 @@ GEM base64 (0.3.0) bcrypt (3.1.22) benchmark (0.5.0) - bigdecimal (4.0.1) + bigdecimal (4.1.2) bindex (0.8.1) - bootsnap (1.23.0) + bootsnap (1.24.3) msgpack (~> 1.2) brakeman (8.0.4) racc @@ -118,6 +118,13 @@ GEM crass (1.0.6) csv (3.3.5) date (3.5.1) + delayed_job (4.2.0) + activesupport (>= 3.0, < 9.0) + benchmark + logger + delayed_job_active_record (4.1.11) + activerecord (>= 3.0, < 9.0) + delayed_job (>= 3.0, < 5) devise (5.0.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) @@ -129,15 +136,12 @@ GEM nokogiri (~> 1.13, >= 1.13.0) rubyzip (>= 2.0, < 4) drb (2.2.3) - erb (6.0.2) + erb (6.0.4) erubi (1.13.1) - et-orbi (1.4.0) - tzinfo fastimage (2.4.1) ffi (1.17.4-x86_64-linux-gnu) - fugit (1.12.1) - et-orbi (~> 1.4) - raabro (~> 1.4) + figaro (1.3.0) + thor (>= 0.14.0, < 2) globalid (1.3.0) activesupport (>= 6.1) hashery (2.1.2) @@ -157,7 +161,7 @@ GEM activesupport (>= 6.0.0) railties (>= 6.0.0) io-console (0.8.2) - irb (1.17.0) + irb (1.18.0) pp (>= 0.6.0) prism (>= 1.3.0) rdoc (>= 4.0.0) @@ -165,7 +169,7 @@ GEM jbuilder (2.14.1) actionview (>= 7.0.0) activesupport (>= 7.0.0) - json (2.19.2) + json (2.19.5) language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) @@ -184,14 +188,14 @@ GEM mini_magick (5.3.1) logger mini_mime (1.1.5) - minitest (6.0.2) + minitest (6.0.6) drb (~> 2.0) prism (~> 1.5) mize (0.6.1) msgpack (1.8.0) - multi_xml (0.8.1) + multi_xml (0.9.1) bigdecimal (>= 3.1, < 5) - net-imap (0.6.3) + net-imap (0.6.4) date net-protocol net-pop (0.1.2) @@ -201,11 +205,11 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.5) - nokogiri (1.19.2-x86_64-linux-gnu) + nokogiri (1.19.3-x86_64-linux-gnu) racc (~> 1.4) orm_adapter (0.5.0) - parallel (1.27.0) - parser (3.3.10.2) + parallel (2.1.0) + parser (3.3.11.1) ast (~> 2.4.1) racc pdf-reader (2.15.1) @@ -232,12 +236,11 @@ GEM nio4r (~> 2.0) pundit (2.5.2) activesupport (>= 3.0.0) - raabro (1.4.0) racc (1.8.1) - rack (3.2.5) + rack (3.2.6) rack-mini-profiler (4.0.1) rack (>= 1.2.0) - rack-session (2.1.1) + rack-session (2.1.2) base64 (>= 0.1.0) rack (>= 3.0.0) rack-test (2.2.0) @@ -265,7 +268,7 @@ GEM rails-html-sanitizer (1.7.0) loofah (~> 2.25) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - rails_icons (1.7.1) + rails_icons (1.8.0) icons (~> 0.8.1) rails (>= 7.0) railties (7.2.3) @@ -279,14 +282,14 @@ GEM tsort (>= 0.2) zeitwerk (~> 2.6) rainbow (3.1.1) - rake (13.3.1) + rake (13.4.2) rdoc (7.2.0) erb psych (>= 4.0.0) tsort readline (0.0.4) reline - regexp_parser (2.11.3) + regexp_parser (2.12.0) reline (0.6.3) io-console (~> 0.5) responders (3.2.0) @@ -310,11 +313,11 @@ GEM rspec-mocks (>= 3.13.0, < 5.0.0) rspec-support (>= 3.13.0, < 5.0.0) rspec-support (3.13.7) - rubocop (1.86.0) + rubocop (1.86.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) - parallel (~> 1.10) + parallel (>= 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) @@ -346,21 +349,14 @@ GEM ruby-vips (2.3.0) ffi (~> 1.12) logger - rubyzip (3.2.2) + rubyzip (3.3.0) securerandom (0.4.1) - selenium-webdriver (4.41.0) + selenium-webdriver (4.43.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) rubyzip (>= 1.2.2, < 4.0) websocket (~> 1.0) - solid_queue (1.4.0) - activejob (>= 7.1) - activerecord (>= 7.1) - concurrent-ruby (>= 1.3.1) - fugit (~> 1.11) - railties (>= 7.1) - thor (>= 1.3.1) sprockets (4.2.2) concurrent-ruby (~> 1.0) logger @@ -376,10 +372,10 @@ GEM tailwindcss-rails (4.4.0) railties (>= 7.0.0) tailwindcss-ruby (~> 4.0) - tailwindcss-ruby (4.2.1-x86_64-linux-gnu) + tailwindcss-ruby (4.2.4-x86_64-linux-gnu) thor (1.5.0) timeout (0.6.1) - tins (1.52.0) + tins (1.53.0) bigdecimal mize (~> 0.6) readline @@ -426,9 +422,11 @@ DEPENDENCIES bundler-audit capybara combine_pdf + delayed_job_active_record devise docx fastimage + figaro httparty image_processing importmap-rails @@ -444,9 +442,9 @@ DEPENDENCIES rubocop-rails rubocop-rails-omakase rubocop-rspec + ruby-vips rubyzip selenium-webdriver - solid_queue sprockets-rails stimulus-rails tailwindcss-rails diff --git a/app/assets/tailwind/application.css b/app/assets/tailwind/application.css index 7b9bd11..70310ac 100644 --- a/app/assets/tailwind/application.css +++ b/app/assets/tailwind/application.css @@ -21,6 +21,7 @@ --color-cobalt-tinted: #003B8F; /* cobalt blue */ --color-cobalt-vivid: #005DE0; + /* #3388FF */ /* platinum */ --color-platinum: #E0E0E0; /* copper */ diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7944f9f..2992107 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,4 +1,15 @@ # frozen_string_literal: true class ApplicationController < ActionController::Base + include Pundit::Authorization + before_action :authenticate_user! + + def after_sign_in_path_for(resource) + stored_location_for(resource) || dashboard_path + end + + def after_sign_out_path_for(resource_or_scope) + root_path + end + end diff --git a/app/controllers/articles_controller.rb b/app/controllers/articles_controller.rb deleted file mode 100644 index 057a093..0000000 --- a/app/controllers/articles_controller.rb +++ /dev/null @@ -1,69 +0,0 @@ -class ArticlesController < ApplicationController - before_action :set_article, only: %i[ show edit update destroy ] - - # GET /articles or /articles.json - def index - @articles = Article.all - end - - # GET /articles/1 or /articles/1.json - def show - end - - # GET /articles/new - def new - @article = Article.new - end - - # GET /articles/1/edit - def edit - end - - # POST /articles or /articles.json - def create - @article = Article.new(article_params) - - respond_to do |format| - if @article.save - format.html { redirect_to @article, notice: "Article was successfully created." } - format.json { render :show, status: :created, location: @article } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @article.errors, status: :unprocessable_entity } - end - end - end - - # PATCH/PUT /articles/1 or /articles/1.json - def update - respond_to do |format| - if @article.update(article_params) - format.html { redirect_to @article, notice: "Article was successfully updated." } - format.json { render :show, status: :ok, location: @article } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @article.errors, status: :unprocessable_entity } - end - end - end - - # DELETE /articles/1 or /articles/1.json - def destroy - @article.destroy - respond_to do |format| - format.html { redirect_to articles_url, notice: "Article was successfully destroyed." } - format.json { head :no_content } - end - end - - private - # Use callbacks to share common setup or constraints between actions. - def set_article - @article = Article.find(params[:id]) - end - - # Only allow a list of trusted parameters through. - def article_params - params.require(:article).permit(:title, :content) - end -end diff --git a/app/controllers/card_logo_files_controller.rb b/app/controllers/card_logo_files_controller.rb deleted file mode 100644 index 53b7cb8..0000000 --- a/app/controllers/card_logo_files_controller.rb +++ /dev/null @@ -1,57 +0,0 @@ -class CardLogoFilesController < ApplicationController - - def index - end - - def show - end - - def image - logo_file = CardLogoFile.find_by(filename: params[:id]) - puts params[:id] - logo_binary = logo_file.image_data - logo_filename = logo_file.filename - logo_file_type = logo_file.content_type - - send_data logo_binary, - filename: logo_filename, - # type: logo_file_type, - disposition: 'inline' - end - - def new - end - - def create - file = card_logo_file_params["logo_file"] - if file.present? && file.is_a?(ActionDispatch::Http::UploadedFile) - filename = file.original_filename - # binary_data = file.read - binary_data = File.binread(file) - meme_type = Marcel::MimeType.for(file) - - CardLogoFile.create( - filename: filename, - image_data: binary_data, - content_type: meme_type, - logo_type: card_logo_file_params["logo_type"] - ) - end - end - - def edit - end - - def update - end - - def destroy - end - - private - - def card_logo_file_params - params.require(:card_logo_file).permit(:logo_file, :logo_type) - end - -end \ No newline at end of file diff --git a/app/controllers/card_providers_controller.rb b/app/controllers/card_providers_controller.rb deleted file mode 100644 index 922f14e..0000000 --- a/app/controllers/card_providers_controller.rb +++ /dev/null @@ -1,70 +0,0 @@ -class CardProvidersController < ApplicationController - before_action :set_card_provider, only: %i[ show edit update destroy ] - - # GET /card_providers or /card_providers.json - def index - @card_providers = CardProvider.all - end - - # GET /card_providers/1 or /card_providers/1.json - def show - end - - # GET /card_providers/new - def new - @card_provider = CardProvider.new - end - - # GET /card_providers/1/edit - def edit - end - - # POST /card_providers or /card_providers.json - def create - @card_provider = CardProvider.new(card_provider_params) - - respond_to do |format| - if @card_provider.save - format.html { redirect_to @card_provider, notice: "Card provider was successfully created." } - format.json { render :show, status: :created, location: @card_provider } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @card_provider.errors, status: :unprocessable_entity } - end - end - end - - # PATCH/PUT /card_providers/1 or /card_providers/1.json - def update - respond_to do |format| - if @card_provider.update(card_provider_params) - format.html { redirect_to @card_provider, notice: "Card provider was successfully updated.", status: :see_other } - format.json { render :show, status: :ok, location: @card_provider } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @card_provider.errors, status: :unprocessable_entity } - end - end - end - - # DELETE /card_providers/1 or /card_providers/1.json - def destroy - @card_provider.destroy! - - respond_to do |format| - format.html { redirect_to card_providers_path, notice: "Card provider was successfully destroyed.", status: :see_other } - format.json { head :no_content } - end - end - - private - # Use callbacks to share common setup or constraints between actions. - def set_card_provider - @card_provider = CardProvider.find(params[:id]) - end - - # Only allow a list of trusted parameters through. - def card_provider_params - params.require(:card_provider).permit(:provider_code, :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :mail_to, :mail_to_2, :contact_line_1, :contact_line_2, :contact_line_3, :group_number, :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :provider_line_6, :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :rx_group_id, :rx_contact, :provider_lookup_1, :provider_lookup_2, :precert_1, :precert_2, :precert_3, :precert_4, :precert_5, :precert_6, :provider_line_12, :claim_to_12) - end -end diff --git a/app/controllers/card_rxes_controller.rb b/app/controllers/card_rxes_controller.rb deleted file mode 100644 index a8a9a97..0000000 --- a/app/controllers/card_rxes_controller.rb +++ /dev/null @@ -1,70 +0,0 @@ -class CardRxesController < ApplicationController - before_action :set_card_rx, only: %i[ show edit update destroy ] - - # GET /card_rxes or /card_rxes.json - def index - @card_rxes = CardRx.all - end - - # GET /card_rxes/1 or /card_rxes/1.json - def show - end - - # GET /card_rxes/new - def new - @card_rx = CardRx.new - end - - # GET /card_rxes/1/edit - def edit - end - - # POST /card_rxes or /card_rxes.json - def create - @card_rx = CardRx.new(card_rx_params) - - respond_to do |format| - if @card_rx.save - format.html { redirect_to @card_rx, notice: "Card rx was successfully created." } - format.json { render :show, status: :created, location: @card_rx } - else - format.html { render :new, status: :unprocessable_entity } - format.json { render json: @card_rx.errors, status: :unprocessable_entity } - end - end - end - - # PATCH/PUT /card_rxes/1 or /card_rxes/1.json - def update - respond_to do |format| - if @card_rx.update(card_rx_params) - format.html { redirect_to @card_rx, notice: "Card rx was successfully updated.", status: :see_other } - format.json { render :show, status: :ok, location: @card_rx } - else - format.html { render :edit, status: :unprocessable_entity } - format.json { render json: @card_rx.errors, status: :unprocessable_entity } - end - end - end - - # DELETE /card_rxes/1 or /card_rxes/1.json - def destroy - @card_rx.destroy! - - respond_to do |format| - format.html { redirect_to card_rxes_path, notice: "Card rx was successfully destroyed.", status: :see_other } - format.json { head :no_content } - end - end - - private - # Use callbacks to share common setup or constraints between actions. - def set_card_rx - @card_rx = CardRx.find(params[:id]) - end - - # Only allow a list of trusted parameters through. - def card_rx_params - params.require(:card_rx).permit(:help_desk, :customer_service, :web_url) - end -end diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb deleted file mode 100644 index ad1568a..0000000 --- a/app/controllers/comments_controller.rb +++ /dev/null @@ -1,13 +0,0 @@ -class CommentsController < ApplicationController - before_action :set_article - - def create - @article.comments.create! params.required(:comment).permit(:content) - redirect_to @article - end - - private - def set_article - @article = Article.find(params[:article_id]) - end -end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb new file mode 100644 index 0000000..391fa2e --- /dev/null +++ b/app/controllers/dashboard_controller.rb @@ -0,0 +1,4 @@ +class DashboardController < ApplicationController + def index + end +end diff --git a/app/controllers/employer_setup_controller.rb b/app/controllers/employer_setup_controller.rb deleted file mode 100644 index bf87de2..0000000 --- a/app/controllers/employer_setup_controller.rb +++ /dev/null @@ -1,257 +0,0 @@ -class EmployerSetupController < ApplicationController - def index - @employer_setups = EmployerSetupProcess.all - end - - def show - - end - - def new - @employer_setup = EmployerSetupProcess.new - @employer_setup.plans.build - @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - render :new - end - - def import - word_doc = params[:employer_setup_process][:import_from_word] - @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - if word_doc.present? && word_doc.is_a?(ActionDispatch::Http::UploadedFile) - @employer_setup = WordDocProcessor.new(word_doc.tempfile).call - render :edit - else - @employer_setup = EmployerSetupProcess.new - @employer_setup.plans.build - render :new - end - end - - def create - employer_setup_process_params = EmployerSetupProcess.permitted_params(params) - puts "---Params---" - puts employer_setup_process_params - # post_image_processing_params = process_logos(employer_setup_process_params) - @employer_setup = EmployerSetupProcess.new(employer_setup_process_params) - if @employer_setup.save - # update_logos_with_employer_setup_information() - redirect_to @employer_setup, notice: 'Employer Setup Process initiated' - else - @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - render :new - end - end - - def edit - @employer_setup = EmployerSetupProcess.find_by(slug: params[:id]) - @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - render :edit - # @resource = Resource.find(params[:id]) - end - - def update - @form = RegistrationForm.new(registration_params) - - if params[:back_button] - @form.current_step = @form.previous_step - elsif params[:skip_newsletter] - @form.current_step = @form.next_step # Skip newsletter step - end - - render :new - end - - def destroy - # @resource = Resource.find(params[:id]) - # @resource.destroy - # redirect_to resources_url, notice: 'Resource was successfully destroyed.' - end - - private - - def process_logos(employer_setup_process_params) - @uploaded_logos = [] - employer_logo = employer_setup_process_params["employer_logo"] - if employer_logo.present? && employer_logo.is_a?(ActionDispatch::Http::UploadedFile) - filename = employer_logo.original_filename - binary_data = employer_logo.read - meme_type = Marcel::MimeType.for(employer_logo) - - CardLogoFile.create( - filename: filename, - image_data: binary_data, - content_type: meme_type, - logo_type: "employer" - ) - - @uploaded_logos.push(filename) - employer_setup_process_params["employer_logo"] = filename - end - - network_logos = employer_setup_process_params["alternate_network_logos_attributes"] - if network_logos.present? - network_logos.each do |alt| - - network_logo = alt.last["network_logo"] - if network_logo.present? && network_logo.is_a?(ActionDispatch::Http::UploadedFile) - filename = network_logo.original_filename - binary_data = network_logo.read - meme_type = Marcel::MimeType.for(network_logo) - - CardLogoFile.create( - filename: filename, - image_data: binary_data, - content_type: meme_type, - logo_type: "network" - ) - - @uploaded_logos.push(filename) - end - alt.last["network_logo"] = @uploaded_logos.last - end - end - employer_setup_process_params - end - - def update_logos_with_employer_setup_information() - @uploaded_logos.each do |logo| - logo_file = CardLogoFile.find_by(filename: logo) - if logo_file.present? && @employer_setup.present? - logo_file.employer_setup_process = @employer_setup - logo_file.save - end - end - - end - - # def general_information_params - # params.require(:employer_setup_general_information_form).permit( - # :name, - # :employer_logo, - # :group_number, - # :dental, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos - # ) - # end - - # def plans_params - # params.require(:employer_setup_plans_form).permit( - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def network_exceptions_params - # params.require(:employer_setup_network_exceptions_form).permit( - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # ) - # end - - def form_for_step - step_name = @top_form.current_step - form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # puts "/////\\\\\\||||||" - # puts session[:employer_setup_data] - # puts session[:employer_setup_data]['employer_setup_process_id'] - puts form_method - form_method.new(session[:employer_setup_data]['employer_setup_process_id']) - end - - def process_step(step_name) - @form_method = "EmployerSetup#{step_name.camelize}Form".constantize - session_data_name = "#{step_name}_data" - # puts "1--------------params----" - # puts params - # puts "8--------------session----" - # puts session[:employer_setup_data] - employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id'] - # puts session[:employer_setup_data] - puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - puts params - @form = @form_method.new(employer_setup_process_id, params) - if @form.pl_plan_key.blank? - @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key'] - end - if @form.valid? && @form.save - pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key - # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key}) - # form_fields = @form.attributes.merge!(global_params(step_name)) - # session[:employer_setup_data][session_data_name] = form_fields - # session[:employer_setup_data].merge!(global_params(step_name)) - # puts session[:employer_setup_data][session_data_name] - true - else - false - end - end - - def step_params(step_name) - form_name_sym = "employer_setup_#{step_name}_form".to_sym - params.require(form_name_sym).permit(@form_method.permitted_params) - end - - def global_params(step_name) - form_name_sym = "employer_setup_#{step_name}_form".to_sym - params.require(form_name_sym).permit(EmployerSetupForm.permitted_params) - end - - # def process_step(step_name) - # form_name = "employer_setup_#{step_name}_form".camelize.constantize - # form_params_name = "#{step_name}_params".to_sym - # allowed_params = [:general_information_params, :plans_params, :network_exceptions_params] - # if allowed_params.include?(form_params_name) - # form_params = send(form_params_name) - # @form = form_name.new(form_params) - # if @form.valid? - # session[:employer_setup_data]["#{step_name}_data"] = form_params - # true - # else - # false - # end - # end - # false - # end - - # def employer_setup_params - # params.require(:employer_setup_form).permit( - # :current_step, - # :name, - # :employer_logo, - # :group_number, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos, - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def benefit_sequence_keys - # (1..14).map { |i| i.to_s.to_sym } - # end - - # def permited_plans_keys - # benefit_sequence_keys.push(:plan_id) - # end - - # def plans_params - # plans_keys = params[:plans]&.keys || [] - - # plans_keys.each_with_object({}) do |key, hash| - # if key == 'benefit_descs' || key.match?(/^plan_\d$/) - # hash[key.to_sym] = permited_plan_param_list - # end - # end - # end - - # def permited_plan_param_list - # (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - # end -end diff --git a/app/controllers/employer_setup_controller_forms.rb b/app/controllers/employer_setup_controller_forms.rb deleted file mode 100644 index 63cb4fa..0000000 --- a/app/controllers/employer_setup_controller_forms.rb +++ /dev/null @@ -1,244 +0,0 @@ -class EmployerSetupController < ApplicationController - def new - # session.delete(:employer_setup_data) - # session.clear() - # puts "Start" - # puts session[:employer_setup_data] - if session[:employer_setup_data].blank? - @process = EmployerSetupProcess.create(status: "form") - session[:employer_setup_data] = { "employer_setup_process_id" => @process.id } - - end - puts "-S--------------------------------------" - puts session[:employer_setup_data] - # session[:employer_setup_data]['current_step'] = 'plans' - - @top_form = EmployerSetupForm.new(session[:employer_setup_data]) - if @top_form.current_step != 'summary' - @form = form_for_step - else - @form = @top_form - end - - # case @top_form.current_step - # when 'general_information' - # @form = EmployerSetupGeneralInformationForm.new(session[:employer_setup_data]&.dig('general_information_data')) - # when 'plans' - # @form = EmployerSetupPlansForm.new(session[:employer_setup_data]&.dig('plans_data')) - # when 'network_exceptions' - # @form = EmployerSetupNetworkExceptionsForm.new(session[:employer_setup_data]&.dig('network_exceptions_data')) - # when 'summary' - # @form = @top_form - # end - render @top_form.current_step_view - end - - def create - # puts session[:employer_setup_data] - @top_form = EmployerSetupForm.new(session[:employer_setup_data]) - if @top_form.current_step != 'summary' - if process_step(@top_form.current_step) - session[:employer_setup_data]['current_step'] = @top_form.next_step - puts "---------------------------------------" - puts "pass" - puts "next - #{@top_form.next_step}" - puts session[:employer_setup_data] - puts "---------------------------------------" - redirect_to new_employer_setup_path - else - puts "fail" - render @top_form.current_step_view - end - else - if @top_form.save - session.delete(:employer_setup_data) - redirect_to root_path, notice: "Employer setup successfully!" - else - render @top_form.current_step_view - end - end - - # case @top_form.current_step - # when 'general_information' - # @form = EmployerSetupGeneralInformationForm.new(general_information_params) - # if @form.valid? - # session[:employer_setup_data]['general_information_data'] = general_information_params - # session[:employer_setup_data]['current_step'] = @top_form.next_step - # redirect_to new_employer_setup_path - # else - # render @top_form.current_step_view - # end - # when 'plans' - # @form = EmployerSetupPlansForm.new(plans_params) - # if @form.valid? - # session[:employer_setup_data]['plans_data'] = plans_params - # session[:employer_setup_data]['current_step'] = @top_form.next_step - # redirect_to new_employer_setup_path - # else - # render @top_form.current_step_view - # end - # when 'network_exceptions' - # @form = EmployerSetupNetworkExceptionsForm.new(network_exceptions_params) - # if @form.valid? - # session[:employer_setup_data]['network_exceptions_data'] = network_exceptions_params - # session[:employer_setup_data]['current_step'] = @top_form.next_step - # redirect_to new_employer_setup_path - # else - # render @top_form.current_step_view - # end - # when 'summary' - # @form = EmployerSetupForm.new(session[:employer_setup_data]) - # if @form.save - # session.delete(:employer_setup_data) - # redirect_to root_path, notice: "Employer setup successfully!" - # else - # render @top_form.current_step_view - # end - # end - end - - def update - @form = RegistrationForm.new(registration_params) - - if params[:back_button] - @form.current_step = @form.previous_step - elsif params[:skip_newsletter] - @form.current_step = @form.next_step # Skip newsletter step - end - - render :new - end - - private - - # def general_information_params - # params.require(:employer_setup_general_information_form).permit( - # :name, - # :employer_logo, - # :group_number, - # :dental, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos - # ) - # end - - # def plans_params - # params.require(:employer_setup_plans_form).permit( - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def network_exceptions_params - # params.require(:employer_setup_network_exceptions_form).permit( - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # ) - # end - - def form_for_step - step_name = @top_form.current_step - form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # puts "/////\\\\\\||||||" - # puts session[:employer_setup_data] - # puts session[:employer_setup_data]['employer_setup_process_id'] - puts form_method - form_method.new(session[:employer_setup_data]['employer_setup_process_id']) - end - - def process_step(step_name) - @form_method = "EmployerSetup#{step_name.camelize}Form".constantize - session_data_name = "#{step_name}_data" - # puts "1--------------params----" - # puts params - # puts "8--------------session----" - # puts session[:employer_setup_data] - employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id'] - # puts session[:employer_setup_data] - puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - puts params - @form = @form_method.new(employer_setup_process_id, params) - if @form.pl_plan_key.blank? - @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key'] - end - if @form.valid? && @form.save - pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key - # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key}) - # form_fields = @form.attributes.merge!(global_params(step_name)) - # session[:employer_setup_data][session_data_name] = form_fields - # session[:employer_setup_data].merge!(global_params(step_name)) - # puts session[:employer_setup_data][session_data_name] - true - else - false - end - end - - def step_params(step_name) - form_name_sym = "employer_setup_#{step_name}_form".to_sym - params.require(form_name_sym).permit(@form_method.permitted_params) - end - - def global_params(step_name) - form_name_sym = "employer_setup_#{step_name}_form".to_sym - params.require(form_name_sym).permit(EmployerSetupForm.permitted_params) - end - - # def process_step(step_name) - # form_name = "employer_setup_#{step_name}_form".camelize.constantize - # form_params_name = "#{step_name}_params".to_sym - # allowed_params = [:general_information_params, :plans_params, :network_exceptions_params] - # if allowed_params.include?(form_params_name) - # form_params = send(form_params_name) - # @form = form_name.new(form_params) - # if @form.valid? - # session[:employer_setup_data]["#{step_name}_data"] = form_params - # true - # else - # false - # end - # end - # false - # end - - # def employer_setup_params - # params.require(:employer_setup_form).permit( - # :current_step, - # :name, - # :employer_logo, - # :group_number, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos, - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def benefit_sequence_keys - # (1..14).map { |i| i.to_s.to_sym } - # end - - # def permited_plans_keys - # benefit_sequence_keys.push(:plan_id) - # end - - # def plans_params - # plans_keys = params[:plans]&.keys || [] - - # plans_keys.each_with_object({}) do |key, hash| - # if key == 'benefit_descs' || key.match?(/^plan_\d$/) - # hash[key.to_sym] = permited_plan_param_list - # end - # end - # end - - # def permited_plan_param_list - # (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - # end -end diff --git a/app/controllers/employer_setup_controller_old.rb b/app/controllers/employer_setup_controller_old.rb deleted file mode 100644 index 98971c2..0000000 --- a/app/controllers/employer_setup_controller_old.rb +++ /dev/null @@ -1,109 +0,0 @@ -class EmployerSetupController < ApplicationController - def new - @employer_data = session[:employer_data] || {} - # @id_card_templates = IdCardTemplate.where.not(title: "BLANK") - # @id_card_template_benefits = IdCardTemplate.find_by(title: "BLANK").id_card_template_benefits.sort_by(&:sequence) - end - - def create_employer - @employer_data = {employer: {}} - @employer_data[:employer].merge!(params.require(:employer).permit( - :name, - :group_number, - :pl_plan_key, - :effective_date - )) - @employer_data[:employer].merge!(params.permit(:number_of_plans)) - - session[:employer_data] = @employer_data - puts session[:employer_data] - redirect_to action: :plans - end - - def plans - @employer_data = session[:employer_data] || {} - @id_card_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - @id_card_template_benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) - end - - def create_plans - @employer_data = session[:employer_data] || {} - @employer_data.merge!(params.require(:plans).permit(plans_params)) - session[:employer_data] = @employer_data - redirect_to action: :networks - end - - def networks - @employer_data = session[:employer_data] || {} - - end - - def create_provider_networks - @employer_data = session[:employer_data] || {} - @employer_data.merge!(params.require(:plans).permit(plans_params)) - session[:employer_data] = @employer_data - redirect_to action: :networks - end - - - def process_bad_name - @final_data = session[:employer_data] - - # Vhcs::HlPlanCode.create( - # group_number: @final_data['employer']['name'], - # medical_number: @final_data['employer']['group_number'], - # dental_number: ' ', - # plan_key: @final_data['employer']['pl_plan_key'], - # effective_date: @final_data['employer']['effective_date'] - # ) - - # default = Vhcs::HLRXCrosRef.find_by(pl_plan_key: 52) - - # Vhcs::HLRXCrosRef.create( - # group_no: @final_data['employer']['group_number'], - # rx_group_id: @final_data['employer']['group_number'], - # help_desk: default.help_desk, - # customer_service: default.customer_service, - # web_url: default.web_url, - # pl_plan_key: @final_data['employer']['pl_plan_key'] - # ) - - # plans_data = @final_data['plans'] - # benefit_descs = plans_data.delete('benefit_descs') - - # plans_data.each do |key, value| - # plan_id = value.delete('plan_id') - # value.each do |key2, value2| - # Vhcs::HLEgglestonCardBenefit.create( - # plan_id: plan_id, - # benefit_desc: benefit_descs[key2], - # benefit: value2, - # sequence: key2, - # plan_key: @final_data['employer']['pl_plan_key'] - # ) - # end - - # end - - # Create or update your model with @final_data - # Clear the session data after successful save - session[:employer_data] = nil - # Redirect to a success page - end - - private - - def plans_params - plans_keys = params[:plans]&.keys || [] - - plans_keys.each_with_object({}) do |key, hash| - if key == 'benefit_descs' || key.match?(/^plan_\d$/) - hash[key.to_sym] = permited_plan_param_list - end - end - end - - def permited_plan_param_list - (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - end -end diff --git a/app/controllers/employer_setup_controller_pre_split.rb b/app/controllers/employer_setup_controller_pre_split.rb deleted file mode 100644 index 964df31..0000000 --- a/app/controllers/employer_setup_controller_pre_split.rb +++ /dev/null @@ -1,89 +0,0 @@ -class EmployerSetupController < ApplicationController - def new - # session.delete(:employer_setup_data) - @form = EmployerSetupForm.new(session[:employer_setup_data]) - if @form.current_step == "plans" - @id_card_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - @id_card_template_benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) - end - puts session[:employer_setup_data] - render "employer_setup/#{@form.current_step}" # Renders the view for the current step - end - - def create - filtered_params = employer_setup_params.except(:validation_context) - @form = EmployerSetupForm.new(filtered_params) - - if @form.current_step == "general" && @form.valid?(:general_info) - # @form.current_step = "plans" - @form.current_step = "networks" # TESTING, Change Back - session[:employer_setup_data] = @form.attributes.slice("current_step", "name", "employer_logo", "group_number", "pl_plan_key", "effect_date", "number_of_plans", "network", "number_of_additional_network_logos") - redirect_to new_employer_setup_path # Redirect to the next step - elsif @form.current_step == "plans" && @form.valid?(:plan_info) - if @form.number_of_additional_network_logos == 0 - next_step = "summary" - else - next_step = "networks" - end - @form.current_step = next_step - session[:employer_setup_data].merge!(@form.attributes.slice("current_step", "plans", "benefit_descs")) - redirect_to new_employer_setup_path - # @form = UserOnboardingForm.new(session[:employer_setup_data]) # Re-initialize with all data - elsif @form.current_step == "networks" && @form.valid?(:network_info) - @form.current_step = "summary" - session[:employer_setup_data].merge!(@form.attributes.slice("current_step", "network_exceptions")) - redirect_to new_employer_setup_path - elsif @form.current_step == "summary" - puts @form.attributes - if @form.save - session.delete(:employer_setup_data) # Clear session data after successful save - redirect_to root_path, notice: "Employer setup successfully!" - else - render "employer_setup/summary" # Render step two again with errors - end - else - render "employer_setup/#{@form.current_step}" # Render the current step again with errors - end - end - - private - - def employer_setup_params - params.require(:employer_setup_form).permit( - :current_step, - :name, - :employer_logo, - :group_number, - :pl_plan_key, - :effect_date, - :number_of_plans, - :network, - :number_of_additional_network_logos, - network_exceptions: [:network_logo, exceptions: [:type, :value]], - plans: permited_plans_keys, - benefit_descs: benefit_sequence_keys - ) - end - - def benefit_sequence_keys - (1..14).map { |i| i.to_s.to_sym } - end - - def permited_plans_keys - benefit_sequence_keys.push(:plan_id) - end - - def plans_params - plans_keys = params[:plans]&.keys || [] - - plans_keys.each_with_object({}) do |key, hash| - if key == 'benefit_descs' || key.match?(/^plan_\d$/) - hash[key.to_sym] = permited_plan_param_list - end - end - end - - def permited_plan_param_list - (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - end -end diff --git a/app/controllers/employers_controller.rb b/app/controllers/employers_controller.rb index dcd4205..1002af1 100644 --- a/app/controllers/employers_controller.rb +++ b/app/controllers/employers_controller.rb @@ -4,6 +4,9 @@ class EmployersController < ApplicationController def index @uninitialized = Employer.in_automation_initilization @with_active_id_card_setup = Employer.with_active_id_card_setup + current_group_numbers = @with_active_id_card_setup.pluck(:group_number) + valid_group_numbers = ["62210","61986","42018","41283","0230643","43190","0230642","0230644","0230646","0233955","600102","0249127","0257902","0257947","600112","0260085","600114","0261611","600117","0261684","0261685","0261826","600121","0265450","600123","0267470","0268540","0268599"] + @beta_unassigned_group_numbers = valid_group_numbers - current_group_numbers @deactivated = Employer.deactivated end @@ -16,29 +19,13 @@ class EmployersController < ApplicationController render :new end - # def import_old - # word_doc = params[:employer][:import_from_word] - # @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - # if word_doc.present? && word_doc.is_a?(ActionDispatch::Http::UploadedFile) - # @employer = WordDocProcessor.new(word_doc.tempfile).call - # else - # @employer = Employer.new - # @employer.build_plan_with_default_benefits - # end - # render :new - # end - def create employer_params = Employer.permitted_params(params) - puts "---Params---" - puts employer_params - # post_image_processing_params = process_logos(employer_setup_process_params) @employer = Employer.new(employer_params) if @employer.save - # update_logos_with_employer_setup_information() redirect_to employer_path(@employer.slug), notice: 'Employer Saved' else - render :new + render :new, status: :unprocessable_entity end end @@ -48,7 +35,6 @@ class EmployersController < ApplicationController end def update - puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" employer_params = Employer.permitted_params(params) @employer = Employer.find(params[:id]) @@ -63,9 +49,9 @@ class EmployersController < ApplicationController end def destroy - # @resource = Resource.find(params[:id]) - # @resource.destroy - # redirect_to resources_url, notice: 'Resource was successfully destroyed.' + @employer = Employer.find(params[:id]) + @employer.destroy + redirect_to employers_path, notice: "#{@employer.name} was successfully deleted." end @@ -83,6 +69,11 @@ class EmployersController < ApplicationController redirect_to employer_path(@employer.slug) end + def beta_automation_simulation + BetaAutomationSimulationService.new().call + redirect_to employers_path + end + def import word_doc = params[:employer][:import_from_word] if word_doc.present? && word_doc.is_a?(ActionDispatch::Http::UploadedFile) @@ -97,189 +88,4 @@ class EmployersController < ApplicationController private - # def process_logos(employer_setup_process_params) - # @uploaded_logos = [] - # employer_logo = employer_setup_process_params["employer_logo"] - # if employer_logo.present? && employer_logo.is_a?(ActionDispatch::Http::UploadedFile) - # filename = employer_logo.original_filename - # binary_data = employer_logo.read - # meme_type = Marcel::MimeType.for(employer_logo) - - # CardLogoFile.create( - # filename: filename, - # image_data: binary_data, - # content_type: meme_type, - # logo_type: "employer" - # ) - - # @uploaded_logos.push(filename) - # employer_setup_process_params["employer_logo"] = filename - # end - - # network_logos = employer_setup_process_params["alternate_network_logos_attributes"] - # if network_logos.present? - # network_logos.each do |alt| - - # network_logo = alt.last["network_logo"] - # if network_logo.present? && network_logo.is_a?(ActionDispatch::Http::UploadedFile) - # filename = network_logo.original_filename - # binary_data = network_logo.read - # meme_type = Marcel::MimeType.for(network_logo) - - # CardLogoFile.create( - # filename: filename, - # image_data: binary_data, - # content_type: meme_type, - # logo_type: "network" - # ) - - # @uploaded_logos.push(filename) - # end - # alt.last["network_logo"] = @uploaded_logos.last - # end - # end - # employer_setup_process_params - # end - - # def update_logos_with_employer_setup_information() - # @uploaded_logos.each do |logo| - # logo_file = CardLogoFile.find_by(filename: logo) - # if logo_file.present? && @employer.present? - # logo_file.employer_setup_process = @employer - # logo_file.save - # end - # end - - # end - - # def general_information_params - # params.require(:employer_setup_general_information_form).permit( - # :name, - # :employer_logo, - # :group_number, - # :dental, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos - # ) - # end - - # def plans_params - # params.require(:employer_setup_plans_form).permit( - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def network_exceptions_params - # params.require(:employer_setup_network_exceptions_form).permit( - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # ) - # end - - # def form_for_step - # step_name = @top_form.current_step - # form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # # puts "/////\\\\\\||||||" - # # puts session[:employer_setup_data] - # # puts session[:employer_setup_data]['employer_setup_process_id'] - # puts form_method - # form_method.new(session[:employer_setup_data]['employer_setup_process_id']) - # end - - # def process_step(step_name) - # @form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # session_data_name = "#{step_name}_data" - # # puts "1--------------params----" - # # puts params - # # puts "8--------------session----" - # # puts session[:employer_setup_data] - # employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id'] - # # puts session[:employer_setup_data] - # puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - # puts params - # @form = @form_method.new(employer_setup_process_id, params) - # if @form.pl_plan_key.blank? - # @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key'] - # end - # if @form.valid? && @form.save - # pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key - # # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key}) - # # form_fields = @form.attributes.merge!(global_params(step_name)) - # # session[:employer_setup_data][session_data_name] = form_fields - # # session[:employer_setup_data].merge!(global_params(step_name)) - # # puts session[:employer_setup_data][session_data_name] - # true - # else - # false - # end - # end - - # def step_params(step_name) - # form_name_sym = "employer_setup_#{step_name}_form".to_sym - # params.require(form_name_sym).permit(@form_method.permitted_params) - # end - - # def global_params(step_name) - # form_name_sym = "employer_setup_#{step_name}_form".to_sym - # params.require(form_name_sym).permit(EmployerSetupForm.permitted_params) - # end - - # def process_step(step_name) - # form_name = "employer_setup_#{step_name}_form".camelize.constantize - # form_params_name = "#{step_name}_params".to_sym - # allowed_params = [:general_information_params, :plans_params, :network_exceptions_params] - # if allowed_params.include?(form_params_name) - # form_params = send(form_params_name) - # @form = form_name.new(form_params) - # if @form.valid? - # session[:employer_setup_data]["#{step_name}_data"] = form_params - # true - # else - # false - # end - # end - # false - # end - - # def employer_setup_params - # params.require(:employer_setup_form).permit( - # :current_step, - # :name, - # :employer_logo, - # :group_number, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos, - # network_exceptions: [:network_logo, exceptions: [:type, :value]], - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def benefit_sequence_keys - # (1..14).map { |i| i.to_s.to_sym } - # end - - # def permited_plans_keys - # benefit_sequence_keys.push(:plan_id) - # end - - # def plans_params - # plans_keys = params[:plans]&.keys || [] - - # plans_keys.each_with_object({}) do |key, hash| - # if key == 'benefit_descs' || key.match?(/^plan_\d$/) - # hash[key.to_sym] = permited_plan_param_list - # end - # end - # end - - # def permited_plan_param_list - # (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - # end end diff --git a/app/controllers/id_card/employer_logos_controller.rb b/app/controllers/id_card/employer_logos_controller.rb index 43cce98..84411e6 100644 --- a/app/controllers/id_card/employer_logos_controller.rb +++ b/app/controllers/id_card/employer_logos_controller.rb @@ -13,19 +13,19 @@ module IdCard def create file = logo_params["logo_file"] - if file.present? && file.is_a?(ActionDispatch::Http::UploadedFile) + employer_id = logo_params["employer_id"] + employer = Employer.find(employer_id) + setup = employer.id_card_setup + if setup.present? && file.present? && file.is_a?(ActionDispatch::Http::UploadedFile) filename = file.original_filename # binary_data = file.read binary_data = File.binread(file) meme_type = Marcel::MimeType.for(file) - employerlogo = IdCard::EmployerLogo.create( - filename: filename, - image_data: binary_data, - content_type: meme_type - ) + employer_logo = IdCard::EmployerLogo.find_or_create_by(filename: filename, setup_id: setup.id) + employer_logo.update(image_data: binary_data) - render json: employerlogo, only: [:id], status: :ok + render json: employer_logo, only: [:id], status: :ok end end @@ -54,7 +54,7 @@ module IdCard private def logo_params - params.require(:id_card_employer_logo).permit(:logo_file) + params.require(:id_card_employer_logo).permit(:logo_file, :employer_id) end end diff --git a/app/controllers/id_card/print_controller.rb b/app/controllers/id_card/print_controller.rb index f00a766..d57aeaf 100644 --- a/app/controllers/id_card/print_controller.rb +++ b/app/controllers/id_card/print_controller.rb @@ -38,14 +38,9 @@ module IdCard end def generate_sample - if Integer(params[:id], exception: false).is_a?(Integer) - pl_plan_key = params[:id].to_s - @employer = Employer.find_by(pl_plan_key: pl_plan_key) - else - slug = params[:id] - @employer = Employer.find_by(slug: slug) - end - sample_cards_pdf = IdCardPrinterService::SampleCardsGenerator.new(@employer).call + employer_id = params[:id] + @employer = Employer.find(employer_id) + sample_cards_pdf = IdCardPrinterService::SampleCardsGenerator.new(@employer.id).call send_data sample_cards_pdf.to_pdf, filename: "#{@employer.name.parameterize(separator: "_")}_sample_cards_#{Date.today}.pdf", diff --git a/app/controllers/id_card/print_data_controller.rb b/app/controllers/id_card/print_data_controller.rb index d2d384b..c9a3a69 100644 --- a/app/controllers/id_card/print_data_controller.rb +++ b/app/controllers/id_card/print_data_controller.rb @@ -1,49 +1,49 @@ module IdCard class PrintDataController < ApplicationController - def generate_sample - @employer = Employer.find_by(slug: params[:employer_slug]) - sample_cards_pdf = IdCardPrinterService::SampleCardsGenerator.new(@employer).call + # def generate_sample + # @employer = Employer.find_by(slug: params[:employer_slug]) + # sample_cards_pdf = IdCardPrinterService::SampleCardsGenerator.new(@employer).call - send_data sample_cards_pdf.to_pdf, - filename: "#{@employer.name.parameterize(separator: "_")}_sample_cards_#{Date.today}.pdf", - type: "application/pdf", - disposition: 'attachment' + # send_data sample_cards_pdf.to_pdf, + # filename: "#{@employer.name.parameterize(separator: "_")}_sample_cards_#{Date.today}.pdf", + # type: "application/pdf", + # disposition: 'attachment' - end + # end - def generate_print - @employer = Employer.find_by(slug: params[:employer_slug]) - cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "PrintCard").call + # def generate_print + # @employer = Employer.find_by(slug: params[:employer_slug]) + # cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "PrintCard").call - send_data cards_pdf.to_pdf, - filename: "#{@employer.name.parameterize(separator: "_")}_print_cards_#{Date.today}.pdf", - type: "application/pdf", - disposition: 'attachment' + # send_data cards_pdf.to_pdf, + # filename: "#{@employer.name.parameterize(separator: "_")}_print_cards_#{Date.today}.pdf", + # type: "application/pdf", + # disposition: 'attachment' - end + # end - def generate_mobile_display - @employer = Employer.find_by(slug: params[:employer_slug]) - cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "MobileDisplayCard").call + # def generate_mobile_display + # @employer = Employer.find_by(slug: params[:employer_slug]) + # cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "MobileDisplayCard").call - send_data cards_pdf.to_pdf, - filename: "#{@employer.name.parameterize(separator: "_")}_mobile_display_cards_#{Date.today}.pdf", - type: "application/pdf", - disposition: 'attachment' + # send_data cards_pdf.to_pdf, + # filename: "#{@employer.name.parameterize(separator: "_")}_mobile_display_cards_#{Date.today}.pdf", + # type: "application/pdf", + # disposition: 'attachment' - end + # end - def generate_full_page - @employer = Employer.find_by(slug: params[:employer_slug]) - cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "FullPageCard", true).call + # def generate_full_page + # @employer = Employer.find_by(slug: params[:employer_slug]) + # cards_pdf = IdCardPrinterService::EmployerCardsGenerator.new(@employer, "FullPageCard", true).call - cards_pdf.rewind - send_data cards_pdf.sysread, - filename: "#{@employer.name.parameterize(separator: "_")}_full_page_cards_#{Date.today}.zip", - type: 'application/zip', - disposition: 'attachment' + # cards_pdf.rewind + # send_data cards_pdf.sysread, + # filename: "#{@employer.name.parameterize(separator: "_")}_full_page_cards_#{Date.today}.zip", + # type: 'application/zip', + # disposition: 'attachment' - end + # end end end \ No newline at end of file diff --git a/app/controllers/id_card/setup_controller.rb b/app/controllers/id_card/setup_controller.rb index a95e531..394abf4 100644 --- a/app/controllers/id_card/setup_controller.rb +++ b/app/controllers/id_card/setup_controller.rb @@ -3,38 +3,17 @@ module IdCard before_action :set_employer_and_setup # View Methods - # def edit - # @employer = Employer.find_by(slug: params[:employer_id]) - # if @employer.id_card_enabled? - # @setup = @employer.id_card_setup - # else - # @setup = @employer.create_id_card_setup - # end - # render :edit - # end - - # def update - # setup_params = IdCard::Setup.permitted_params(params) - # @setup = IdCard::Setup.find(params[:id]) - - # if @setup.update(setup_params) - # puts "sucess" - # redirect_to employer_path(@setup.employer.slug), notice: 'ID Card Setup was successfully updated.' - # else - # puts "fail" - # render :edit, status: :unprocessable_entity - # end - - # end def index - provider_defaults = IdCard::ProviderSection.defaults - @provider_options = provider_defaults.map { |p| ["Default #{p.title}", p.id] }.concat(provider_defaults.map { |p| ["New #{p.title}", "new|#{p.id}"] }) - if @setup.provider_section_id.present? && provider_defaults.map(&:id).exclude?(@setup.provider_section_id) - @provider_options.insert(0, ["#{@employer.name} Custom", @setup.provider_section_id]) + if @setup.provider_section.present? && !@setup.provider_section.default + employer_custom_options = @setup.provider_section + else + employer_custom_options = IdCard::ProviderSection.new(title: "#{@employer.name} Custom") end - @rx_options = IdCard::RxSection.all - @fairos_rx_id = IdCard::RxSection.find_by(title: "FairosRx").id + @provider_options = (IdCard::ProviderSection.where(default: true) + [employer_custom_options]) + .compact.uniq.map { |option| [option.display_title, option.id || "99"] } + @rx_options = IdCard::RxSection.where.not(title: nil) + @rx_default = IdCard::RxSection.find_by(title: "FairosRx") render :index end @@ -50,6 +29,15 @@ module IdCard redirect_to employer_path(@employer.slug), notice: 'ID Card Setup was successfully updated.' else puts "fail" + if @setup.provider_section.present? && !@setup.provider_section.default + employer_custom_options = @setup.provider_section + else + employer_custom_options = IdCard::ProviderSection.new(title: "#{@employer.name} Custom") + end + @provider_options = (IdCard::ProviderSection.where(default: true) + [employer_custom_options]) + .compact.uniq.map { |option| [option.display_title, option.id || "99"] } + @rx_options = IdCard::RxSection.all + @rx_default = IdCard::RxSection.find_by(title: "FairosRx") render :index, status: :unprocessable_entity end end @@ -66,6 +54,7 @@ module IdCard redirect_to employer_path(@setup.employer.slug), notice: 'ID Card Plans successfully updated.' else puts "fail" + @plan_templates = IdCard::Plan.templates render :plans, status: :unprocessable_entity end @@ -99,9 +88,6 @@ module IdCard end def destroy - # @resource = Resource.find(params[:id]) - # @resource.destroy - # redirect_to resources_url, notice: 'Resource was successfully destroyed.' end # API Methods @@ -117,190 +103,5 @@ module IdCard end end - # def process_logos(employer_setup_process_params) - # @uploaded_logos = [] - # employer_logo = employer_setup_process_params["employer_logo"] - # if employer_logo.present? && employer_logo.is_a?(ActionDispatch::Http::UploadedFile) - # filename = employer_logo.original_filename - # binary_data = employer_logo.read - # meme_type = Marcel::MimeType.for(employer_logo) - - # CardLogoFile.create( - # filename: filename, - # image_data: binary_data, - # content_type: meme_type, - # logo_type: "employer" - # ) - - # @uploaded_logos.push(filename) - # employer_setup_process_params["employer_logo"] = filename - # end - - # network_logos = employer_setup_process_params["alternate_network_logos_attributes"] - # if network_logos.present? - # network_logos.each do |alt| - - # network_logo = alt.last["network_logo"] - # if network_logo.present? && network_logo.is_a?(ActionDispatch::Http::UploadedFile) - # filename = network_logo.original_filename - # binary_data = network_logo.read - # meme_type = Marcel::MimeType.for(network_logo) - - # CardLogoFile.create( - # filename: filename, - # image_data: binary_data, - # content_type: meme_type, - # logo_type: "network" - # ) - - # @uploaded_logos.push(filename) - # end - # alt.last["network_logo"] = @uploaded_logos.last - # end - # end - # employer_setup_process_params - # end - - # def update_logos_with_employer_setup_information() - # @uploaded_logos.each do |logo| - # logo_file = CardLogoFile.find_by(filename: logo) - # if logo_file.present? && @employer.present? - # logo_file.employer_setup_process = @employer - # logo_file.save - # end - # end - - # end - - # def general_information_params - # params.require(:employer_setup_general_information_form).permit( - # :name, - # :employer_logo, - # :group_number, - # :dental, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos - # ) - # end - - # def plans_params - # params.require(:employer_setup_plans_form).permit( - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def network_field_exceptions_params - # params.require(:employer_setup_network_field_exceptions_form).permit( - # network_field_exceptions: [:network_logo, field_exceptions: [:type, :value]], - # ) - # end - - # def form_for_step - # step_name = @top_form.current_step - # form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # # puts "/////\\\\\\||||||" - # # puts session[:employer_setup_data] - # # puts session[:employer_setup_data]['employer_setup_process_id'] - # puts form_method - # form_method.new(session[:employer_setup_data]['employer_setup_process_id']) - # end - - # def process_step(step_name) - # @form_method = "EmployerSetup#{step_name.camelize}Form".constantize - # session_data_name = "#{step_name}_data" - # # puts "1--------------params----" - # # puts params - # # puts "8--------------session----" - # # puts session[:employer_setup_data] - # employer_setup_process_id = session[:employer_setup_data]['employer_setup_process_id'] - # # puts session[:employer_setup_data] - # puts "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" - # puts params - # @form = @form_method.new(employer_setup_process_id, params) - # if @form.pl_plan_key.blank? - # @form.pl_plan_key = session[:employer_setup_data]['pl_plan_key'] - # end - # if @form.valid? && @form.save - # pl_plan_key = @top_form.pl_plan_key || @form.pl_plan_key - # # session[:employer_setup_data].merge!({current_step: step_name, pl_plan_key: pl_plan_key}) - # # form_fields = @form.attributes.merge!(global_params(step_name)) - # # session[:employer_setup_data][session_data_name] = form_fields - # # session[:employer_setup_data].merge!(global_params(step_name)) - # # puts session[:employer_setup_data][session_data_name] - # true - # else - # false - # end - # end - - # def step_params(step_name) - # form_name_sym = "employer_setup_#{step_name}_form".to_sym - # params.require(form_name_sym).permit(@form_method.permitted_params) - # end - - # def global_params(step_name) - # form_name_sym = "employer_setup_#{step_name}_form".to_sym - # params.require(form_name_sym).permit(EmployerSetupForm.permitted_params) - # end - - # def process_step(step_name) - # form_name = "employer_setup_#{step_name}_form".camelize.constantize - # form_params_name = "#{step_name}_params".to_sym - # allowed_params = [:general_information_params, :plans_params, :network_field_exceptions_params] - # if allowed_params.include?(form_params_name) - # form_params = send(form_params_name) - # @form = form_name.new(form_params) - # if @form.valid? - # session[:employer_setup_data]["#{step_name}_data"] = form_params - # true - # else - # false - # end - # end - # false - # end - - # def employer_setup_params - # params.require(:employer_setup_form).permit( - # :current_step, - # :name, - # :employer_logo, - # :group_number, - # :pl_plan_key, - # :effect_date, - # :number_of_plans, - # :network, - # :number_of_additional_network_logos, - # network_field_exceptions: [:network_logo, field_exceptions: [:type, :value]], - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - # def benefit_sequence_keys - # (1..14).map { |i| i.to_s.to_sym } - # end - - # def permited_plans_keys - # benefit_sequence_keys.push(:plan_id) - # end - - # def plans_params - # plans_keys = params[:plans]&.keys || [] - - # plans_keys.each_with_object({}) do |key, hash| - # if key == 'benefit_descs' || key.match?(/^plan_\d$/) - # hash[key.to_sym] = permited_plan_param_list - # end - # end - # end - - # def permited_plan_param_list - # (1..14).map { |i| i.to_s.to_sym }.push(:plan_id) - # end end end diff --git a/app/controllers/id_card_benefits_templates_controller.rb b/app/controllers/id_card_benefits_templates_controller.rb deleted file mode 100644 index c051477..0000000 --- a/app/controllers/id_card_benefits_templates_controller.rb +++ /dev/null @@ -1,89 +0,0 @@ -class IdCardBenefitsTemplatesController < ApplicationController - skip_before_action :verify_authenticity_token - - def new_id_card_template - @id_card_templates = IdCardTemplate.where.not(title: "BLANK") - @id_card_template_benefits = IdCardTemplate.find_by(title: "BLANK").id_card_template_benefits.sort_by(&:sequence) - end - - def create_id_card_template - @id_card_template = IdCardTemplate.create(title: params[:title]) - - params[:benefits].each do |key, value| - IdCardTemplateBenefit.create( - sequence: key, - benefit_desc: value["desc"], - benefit: value["value"], - id_card_template: @id_card_template - ) - - end - - respond_to do |format| - if @id_card_template.save && @id_card_template.id_card_template_benefits.length == 14 - format.html { redirect_to '/dev_tools/new_id_card_setup', notice: "Template was successfully created." } - # format.json { render :show, status: :created, location: @employer } - else - format.html { render :new_id_card_template, status: :unprocessable_entity } - # format.json { render json: @employer.errors, status: :unprocessable_entity } - end - end - end - - def new_id_card_setup - @id_card_templates = IdCardTemplate.where.not(title: "BLANK") - @id_card_template_benefits = IdCardTemplate.find_by(title: "BLANK").id_card_template_benefits - end - - def get_template_benefits - @id_card_benefits = IdCardBenefitsTemplate.find(params[:id]).id_card_benefits - render json: @id_card_benefits.as_json - end - - def create_id_card_setup - employer_general = params['general'] - hl_plan_code = Vhcs::HlPlanCode.new( - group_number: employer_general['group_number'], - medical_number: employer_general['group_number'], - dental_number: '', - plan_key: employer_general['pl_plan_key'], - effect_date: employer_general['effect_date'] - ) - - # Replace fairos_info with template like for benefits - fairos_info = Vhcs::HLRXCrosRef.where(pl_plan_key: 52).first - hlrx_cros_ref = Vhcs::HLRXCrosRef.new( - group_no: employer_general['group_number'], - rx_group_id: employer_general['group_number'], - help_desk: fairos_info.help_desk, - customer_service: fairos_info.customer_service, - web_url: fairos_info.web_url, - pl_plan_key: employer_general['pl_plan_key'] - ) - - number_of_plans = params[:number_of_plans].to_i - - number_of_plans.each do |i| - value['benefits'].each do |ben_key, ben_value| - Vhcs::HLEgglestonCardBenefit.create( - plan_id: value['plan_id'], - benefit_desc: ben_value["desc"], - benefit: ben_value["value"], - sequence: ben_key, - plan_key: employer_general['pl_plan_key'] - ) - end - end - - respond_to do |format| - if hl_plan_code.save && hlrx_cros_ref.save - format.html { redirect_to '/dev_tools/new_id_card_setup', notice: "Card setup was successfully created." } - # format.json { render :show, status: :created, location: @employer } - else - format.html { render :new_id_card_setup, status: :unprocessable_entity } - # format.json { render json: @employer.errors, status: :unprocessable_entity } - end - end - end - -end diff --git a/app/controllers/id_card_employer_logos_controller.rb b/app/controllers/id_card_employer_logos_controller.rb deleted file mode 100644 index c4cc5d3..0000000 --- a/app/controllers/id_card_employer_logos_controller.rb +++ /dev/null @@ -1,57 +0,0 @@ -class IdCardEmployerLogoController < ApplicationController - - def index - end - - def show - end - - def image - logo_file = IdCard::EmployerLogo.find_by(filename: params[:id]) - puts params[:id] - if logo_file - logo_binary = logo_file.image_data - logo_filename = logo_file.filename - - send_data logo_binary, - filename: logo_filename, - disposition: 'inline' - end - end - - def new - end - - def create - file = card_logo_file_params["logo_file"] - if file.present? && file.is_a?(ActionDispatch::Http::UploadedFile) - filename = file.original_filename - # binary_data = file.read - binary_data = File.binread(file) - meme_type = Marcel::MimeType.for(file) - - CardLogoFile.create( - filename: filename, - image_data: binary_data, - content_type: meme_type, - logo_type: card_logo_file_params["logo_type"] - ) - end - end - - def edit - end - - def update - end - - def destroy - end - - private - - def card_logo_file_params - params.require(:card_logo_file).permit(:logo_file, :logo_type) - end - -end \ No newline at end of file diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb deleted file mode 100644 index f9b859b..0000000 --- a/app/controllers/welcome_controller.rb +++ /dev/null @@ -1,4 +0,0 @@ -class WelcomeController < ApplicationController - def index - end -end diff --git a/app/form_builders/tailwind_form_builder.rb b/app/form_builders/tailwind_form_builder.rb index 3b037e9..9439dd7 100644 --- a/app/form_builders/tailwind_form_builder.rb +++ b/app/form_builders/tailwind_form_builder.rb @@ -3,9 +3,9 @@ class TailwindFormBuilder < ActionView::Helpers::FormBuilder # leans on the FormBuilder class_attribute `field_helpers` # you'll want to add a method for each of the specific helpers listed here if you want to style them - TEXT_FIELD_STYLE = "bg-gray-200 rounded py-2 px-4 text-bluetang font-semibold leading-tight focus:outline-none focus:bg-white".freeze - SELECT_FIELD_STYLE = "block bg-gray-200 text-gray-700 py-2 px-4 rounded leading-tight focus:outline-none focus:bg-white".freeze - SUBMIT_BUTTON_STYLE = "cursor-pointer shadow bg-bronze focus:shadow-outline focus:outline-none text-white font-bold py-2 px-4 rounded hover:bg-copper".freeze + TEXT_FIELD_STYLE = "flex bg-gray-200 rounded py-2 px-4 text-bluetang font-semibold leading-tight focus:outline-none focus:bg-white border border-platinum".freeze + SELECT_FIELD_STYLE = "block bg-gray-200 text-bluetang py-2 px-4 font-semibold rounded leading-tight focus:outline-none focus:bg-white border border-platinum".freeze + SUBMIT_BUTTON_STYLE = "cursor-pointer font-bold text-lg text-platinum hover:text-bronze bg-cobalt-vivid hover:bg-deepcove border-2 border-cobalt-vivid py-2 px-4 rounded".freeze text_field_helpers.each do |field_method| class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 @@ -48,6 +48,7 @@ class TailwindFormBuilder < ActionView::Helpers::FormBuilder custom_opts, opts = partition_custom_opts(options) classes = apply_style_classes(TEXT_FIELD_STYLE, custom_opts, object_method) + puts "classes: #{classes}" field = send(field_method, object_method, { class: classes, @@ -63,7 +64,7 @@ class TailwindFormBuilder < ActionView::Helpers::FormBuilder label = tailwind_label(object_method, label_options, field_options) error_label = error_label(object_method, field_options) - @template.content_tag("div", label + error_label, {class: "flex flex-col items-start"}) + @template.content_tag("div", label + error_label, {class: "flex justify-between"}) end def tailwind_label(object_method, label_options, field_options) @@ -73,8 +74,8 @@ class TailwindFormBuilder < ActionView::Helpers::FormBuilder [object_method.to_s.titleize, {}] end - label_classes = label_opts[:class] || "block text-platinum font-bold md:text-right mb-1 md:mb-0 pr-4" - label_classes += " text-yellow-800 dark:text-yellow-400" if field_options[:disabled] + label_classes = label_opts[:class] || "block shrink-0 text-platinum font-bold md:text-right mb-1 md:mb-0 pr-4" + label_classes += " dark:text-brightlava" if field_options[:disabled] label(object_method, text, { class: label_classes }.merge(label_opts.except(:class))) @@ -83,15 +84,16 @@ class TailwindFormBuilder < ActionView::Helpers::FormBuilder def error_label(object_method, options) if errors_for(object_method).present? error_message = @object.errors[object_method].collect(&:titleize).join(", ") - tailwind_label(object_method, {text: error_message, class: " font-bold text-red-500"}, options) + tailwind_label(object_method, {text: error_message, class: " font-bold text-right text-bronze"}, options) end end def border_color_classes(object_method) if errors_for(object_method).present? - " border-2 border-red-400 focus:border-rose-200" + " border-4 dark:border-bronze focus:border-atmosphere" else - " border border-platinum focus:border-yellow-700" + "" + # " border border-platinum focus:border-yellow-700" end end diff --git a/app/forms/employer_setup_form.rb b/app/forms/employer_setup_form.rb deleted file mode 100644 index c2561ec..0000000 --- a/app/forms/employer_setup_form.rb +++ /dev/null @@ -1,85 +0,0 @@ -class EmployerSetupForm - include ActiveModel::Model - include ActiveModel::Attributes - - FIRST_STEP = "general_information" - - attribute :current_step, :string, default: FIRST_STEP - attribute :pl_plan_key, :string - attribute :employer_setup_process_id, :integer - - def initialize(params = {}) - # if params.present? - # params = permitted_params(params) - # end - # @current_step = params["current_step"] - # @employer_setup_process_id = params["employer_setup_process_id"] - super(params) - - unless self.steps.first == FIRST_STEP - raise StepMisalignmentError, "FIRST_STEP does not match first entry in steps" - end - # @general_information_data = EmployerSetupGeneralInformationForm.new(attributes[:general_information_data]) - # @plans_data = EmployerSetupPlansForm.new(attributes[:plans_data]) - # @network_exceptions_data = EmployerSetupNetworkExceptionsForm.new(attributes[:network_exceptions_data]) - end - - # def self.form_session_init - # { - # general_information_data: {}, - # plans_data: {}, - # network_exceptions_data: {} - # } - # end - - # def steps - # %w[general_information plans network_exceptions summary] - # end - - def steps - %w[general_information plans network_exceptions summary] - end - - def current_step_view - "employer_setup/#{self.current_step}" - end - - def next_step - index = steps.index(current_step) - if index && index < steps.length - 1 - steps[index + 1] - end - end - - def previous_step - index = steps.index(current_step) - steps[index - 1] if index && index > 0 - end - - def permitted_params(params) - params.permit( - :pl_plan_key, - :current_step - ) - end - - def self.permitted_params - [ - :pl_plan_key, - :current_step - ] - end - - def save - if valid? - process = EmployerSetupProcess.find(@employer_setup_process_id) - process.update( - status: "entered" - ) - true - else - false - end - end - -end \ No newline at end of file diff --git a/app/forms/employer_setup_form_pre_split.rb b/app/forms/employer_setup_form_pre_split.rb deleted file mode 100644 index dad07a2..0000000 --- a/app/forms/employer_setup_form_pre_split.rb +++ /dev/null @@ -1,62 +0,0 @@ -class EmployerSetupForm - include ActiveModel::Model - include ActiveModel::Attributes - - attribute :current_step, :string, default: "general" - attribute :name, :string - attribute :employer_logo - attribute :group_number, :string - attribute :pl_plan_key, :string - attribute :effect_date, :string - attribute :number_of_plans, :integer - attribute :network, :string - attribute :number_of_additional_network_logos, :integer - attribute :plans, array: true, default: -> { [] } -# attribute :benefit_descs, :hash, default: -> { {} } - attribute :network_exceptions, array: true, default: -> { [] } - - attr_accessor :benefit_descs - - # Define validations based on the current step - with_options on: :general_info do - validates :name, presence: true - validates :employer_logo, presence: true - validates :group_number, presence: true - validates :pl_plan_key, presence: true - validates :effect_date, presence: true - validates :number_of_plans, presence: true - validates :network, presence: true - # validates :number_of_additional_network_logos, presence: true if network = "cigna+" - end - - with_options on: :plan_info do - validates :plans, presence: true - # validates :benefit_descs, presence: true - end - - with_options on: :network_info do - # validates :network_exceptions, presence: true if number_of_additional_network_logos > 0 - end - -# def initialize(params = {}) -# super(params) -# # Ensure the attribute is a hash after initialization -# @benefit_descs = params[:benefit_descs].to_h if params[:benefit_descs] -# end - - def benefit_descs - @benefit_descs ||= {} - end - - def save - # Implement logic to save data to models after all steps are complete - # For example, create a User record with the collected data - if valid? && step == total_steps - # User.create!(name: name, email: email, password: password) - true - else - false - end - end - -end \ No newline at end of file diff --git a/app/forms/employer_setup_general_information_form.rb b/app/forms/employer_setup_general_information_form.rb deleted file mode 100644 index a438aec..0000000 --- a/app/forms/employer_setup_general_information_form.rb +++ /dev/null @@ -1,130 +0,0 @@ -class EmployerSetupGeneralInformationForm - include ActiveModel::Model - include ActiveModel::Attributes - - attribute :name, :string - attribute :employer_logo - attribute :group_number, :string - attribute :dental, :boolean, default: false - attribute :pl_plan_key, :string - attribute :effective_date, :string - # attribute :number_of_plans, :integer - attribute :network, :string - # attribute :number_of_additional_network_logos, :integer - - attr_accessor :employer_setup_process_id - - validates :name, presence: true - validates :employer_logo, presence: true - validates :group_number, presence: true - validates :effective_date, presence: true - # validates :number_of_plans, presence: true - validates :network, presence: true - # validates :number_of_additional_network_logos, presence: true if network = "cigna+" - - # def initialize(attributes = {}) - # if attributes - # permitted_attributes = form_strong_params(attributes) - # super(permitted_attributes) - # end - - def initialize(employer_setup_process_id, params = {}) - @employer_setup_process_id = employer_setup_process_id - if params.present? - form_params = permitted_params(params) - super(form_params) - else - super(params) - load_from_process - end - end - - def load_from_process - process = EmployerSetupProcess.find(@employer_setup_process_id) - - self.name = process.employer_name - # self.employer_logo = process. - self.group_number = process.group_number - self.dental = false - self.pl_plan_key = process.pl_plan_key - self.effective_date = process.effective_date - self.network = process.network_provider - end - - def permitted_params(params) - params.require(:employer_setup_general_information_form).permit( - :name, - :employer_logo, - :group_number, - :dental, - :pl_plan_key, - :effective_date, - :number_of_plans, - :network, - :number_of_additional_network_logos - ) - end - - def save - # Implement logic to save data to models after all steps are complete - # For example, create a User record with the collected data - if valid? - process = EmployerSetupProcess.find(@employer_setup_process_id) - process.update( - employer_name: name, - group_number: group_number, - pl_plan_key: pl_plan_key, - effective_date: effective_date, - network_provider: network - ) - - # hl_plan_code = Vhcs::HlPlanCode.create!( - # group_number: group_number, - # medical_number: group_number, - # dental_number: '', - # plan_key: pl_plan_key, - # effect_date: effective_date - # ) - - # # Replace fairos_info with template like for benefits - # fairos_info = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - # hlrx_cros_ref = Vhcs::HlrxCrosRef.create!( - # group_no: group_number, - # rx_group_id: group_number, - # help_desk: fairos_info.help_desk, - # customer_service: fairos_info.customer_service, - # web_url: fairos_info.web_url, - # pl_plan_key: pl_plan_key - # ) - - # web_employer = BrittonWeb::Employers.create!( - # name: name, - # pl_plan_key: pl_plan_key, - # dental_plan: dental, - # single_card_template: 'FairosRxIDCard', - # logo: employer_logo.original_filename - # ) - - # default_network_logo = - # case - # when network.include?("cig") - # "CignaLogo.png" - # when network.include?("med") - # "Logo_MC_PMS.png" - # else - # "CignaLogo.png" - # end - - # BrittonWeb::NetworkLogos.create!( - # employer_id: web_employer.id, - # net_logo: default_network_logo, - # default: true - # ) - - true - else - false - end - end - -end \ No newline at end of file diff --git a/app/forms/employer_setup_network_exceptions_form.rb b/app/forms/employer_setup_network_exceptions_form.rb deleted file mode 100644 index f9f71de..0000000 --- a/app/forms/employer_setup_network_exceptions_form.rb +++ /dev/null @@ -1,107 +0,0 @@ -class EmployerSetupNetworkExceptionsForm - include ActiveModel::Model - include ActiveModel::Attributes - - Network_exception = Struct.new(:network_logo, :exceptions) - attribute :network_exceptions, :array_of_items, default: -> { [] } - attribute :pl_plan_key, :string - - attr_accessor :employer_setup_process_id - - # validates :network_exceptions, presence: true if number_of_additional_network_logos > 0 - - def initialize(employer_setup_process_id, params = {}) - @employer_setup_process_id = employer_setup_process_id - if params.present? - form_params = permitted_params(params) - super(form_params) - else - super(params) - end - - end - - def permitted_params(params) - params.require(:employer_setup_network_exceptions_form).permit( - network_exceptions: [ - :network_logo, - exceptions: [ - :type, - :value - ] - ] - ) - end - - # def self.permitted_params - # [ - # network_exceptions: [ - # :network_logo, - # exceptions: [ - # :type, - # :value - # ] - # ] - # ] - # end - - def pull_from_employer_setup_form(attributes = {}) - if attributes['pl_plan_key'] - self.pl_plan_key = attributes['pl_plan_key'] - end - if attributes['number_of_additional_network_logos'] - self.number_of_additional_network_logos = attributes['number_of_additional_network_logos'] - end - end - - def process_for_save(network_exceptions) - ne_array = [] - network_exceptions.first.each do |ne| - processed_ne = ne.last - exceptions_array = [] - processed_ne['exceptions'].each do |e| - exceptions_array.push(e.last) - end - processed_ne['exceptions'] = exceptions_array - ne_array.push(processed_ne) - end - ne_array - end - - def save - # Implement logic to save data to models after all steps are complete - # For example, create a User record with the collected data - if valid? - process = EmployerSetupProcess.find(@employer_setup_process_id) - # employer = BrittonWeb::Employers.find_by(pl_plan_key: pl_plan_key) - if network_exceptions - network_exceptions_data = process_for_save(network_exceptions) - end - # network_exceptions_data.each do |ne| - # ne['exceptions'].each do |ex| - # BrittonWeb::NetworkLogos.create!( - # employer_id: employer.id, - # net_logo: ne['network_logo'].original_filename, - # exception_type: ex['type'].downcase, - # exception_value: ex['value'], - # default: false - # ) - # end - # end - - true - else - false - end - end - -end - - -class NetworkException - include ActiveModel::Model - include ActiveModel::Attributes - - attribute :network_logo - attribute :exceptions, array: true, default: -> { [] } -end \ No newline at end of file diff --git a/app/forms/employer_setup_plans_form.rb b/app/forms/employer_setup_plans_form.rb deleted file mode 100644 index dbf596a..0000000 --- a/app/forms/employer_setup_plans_form.rb +++ /dev/null @@ -1,186 +0,0 @@ -class EmployerSetupPlansForm - include ActiveModel::Model - include ActiveModel::Attributes - - PLAN_COLORS = ['atmosphere', 'verdigris', 'bluemana', 'cobalt'] - - attribute :plans, array: true, default: -> { [Plan.new] } - attribute :pl_plan_key, :string - attribute :benefit_descs, hash: true, default: -> { Plan.new } - - attr_accessor :plan_templates - attr_accessor :benefits_template - attr_accessor :employer_setup_process_id - - validates :plans, presence: true - validates :benefit_descs, presence: true - - def initialize(employer_setup_process_id, params = {}) - @employer_setup_process_id = employer_setup_process_id - if params.present? - form_params = permitted_params(params) - super(form_params) - else - super(params) - process_plans = EmployerSetupProcess.find(@employer_setup_process_id).plans - if process_plans.present? - self.plans = process_plans - end - end - - @plan_templates = IdCardBenefitsTemplate.where.not(title: "BLANK") - @benefits_template = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) - - # if attributes.present? && attributes[:plans].present? - # self.plans = Array(attributes[:plans]) - # else - # self.plans = [new_plan] - # end - end - - # def plans_attributes=(attributes) - # self.plans = attributes.values.map { |plan_attrs| Plan.new(plan_attrs) } - # end - - def persisted? - false - end - - - # The core method to initialize the array with a single blank item. - def ensure_one_plan_exists - if plans.empty? - self.plans << PlanForm.new - self.plans << PlanForm.new - end - end - - def bulild_descs_plan - self.benefit_descs = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) - end - - def self.new_plan - plan = {} - self.permited_plans_keys.each do |key| - plan[key] = "" - end - plan - end - - def process_params(employer_setup_process_id) - process = EmployerSetupProcess.find(employer_setup_process_id) - process.plans - end - - def permitted_params(params) - params.require(:employer_setup_plans_form).permit( - :pl_plan_key, - plans: self.permited_plans_keys, - benefit_descs: self.permited_plans_keys - ) - end - - def pull_from_employer_setup_form(attributes = {}) - if attributes['pl_plan_key'] - self.pl_plan_key = attributes['pl_plan_key'] - end - if attributes['number_of_plans'] - self.number_of_plans = attributes['number_of_plans'] - end - end - - # def form_strong_params(attributes) - # attributes.require(:employer_setup_plans_form).permit( - # plans: permited_plans_keys, - # benefit_descs: benefit_sequence_keys - # ) - # end - - def self.permited_plans_keys - (1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_id) - end - - def permited_plans_keys - (1..14).map { |i| "benefit_#{i}".to_sym }.push(:plan_id, :id) - end - - def save - # Implement logic to save data to models after all steps are complete - # For example, create a User record with the collected data - if valid? - process = EmployerSetupProcess.find(@employer_setup_process_id) - # process.plans.update(plans: plans) - - planss = Array.wrap(plans) - - plans.each_with_index do |plan, i| - plan_info = plan.last - plan_id = plan_info[:plan_id].present? ? plan_info[:plan_id].to_i : "temp #{i}" - plan_info.delete(:plan_id) - new_plan = process.plans.create(plan_id: plan_id) - plan_info.each do |key, value| - sequence = key.delete_prefix("benefit_").to_i - benefit = new_plan.plan_benefits.find_by(sequence: sequence) - benefit.update( - benefit: value - ) - # Vhcs::HlEgglestonCardBenefit.create( - # plan_id: plan_id, - # benefit_desc: benefit_descs["#{key}"], - # benefit: value, - # sequence: sequence, - # plan_key: pl_plan_key - # ) - end - end - - - # plans.each do |plan| - # plan_info = plan.last - # plan_id = plan_info.delete(:plan_id).to_i - # plan_info.each do |key, value| - # sequence = key.delete_prefix("benefit_").to_i - # Vhcs::HlEgglestonCardBenefit.create( - # plan_id: plan_id, - # benefit_desc: benefit_descs["#{key}"], - # benefit: value, - # sequence: sequence, - # plan_key: pl_plan_key - # ) - # end - # end - true - else - false - end - end - -end - -class PlanForm - include ActiveModel::Model - include ActiveModel::Attributes - - attribute :plan_id, :string - - def initialize(attributes = {}) - self.generate_attributes(14, "benefit_") - super(attributes) - end - - def persisted? - false - end - - def generate_attributes(count, prefix) - count.times do |i| - # attr_accessor :"#{prefix}#{i + 1}" - self.class.attribute "#{prefix}#{i + 1}".to_sym, :string - end - end -end - -# dynamic_attribute_names.each do |attr_name| -# # Define each attribute as a String type (you can customize the type) -# self.class.attribute attr_name.to_sym, :string -# end \ No newline at end of file diff --git a/app/helpers/articles_helper.rb b/app/helpers/articles_helper.rb deleted file mode 100644 index 2968277..0000000 --- a/app/helpers/articles_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module ArticlesHelper -end diff --git a/app/helpers/card_providers_helper.rb b/app/helpers/card_providers_helper.rb deleted file mode 100644 index d50854e..0000000 --- a/app/helpers/card_providers_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CardProvidersHelper -end diff --git a/app/helpers/card_rxes_helper.rb b/app/helpers/card_rxes_helper.rb deleted file mode 100644 index 6188961..0000000 --- a/app/helpers/card_rxes_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CardRxesHelper -end diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb deleted file mode 100644 index 0ec9ca5..0000000 --- a/app/helpers/comments_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CommentsHelper -end diff --git a/app/helpers/id_card_employers_helper.rb b/app/helpers/id_card_employers_helper.rb deleted file mode 100644 index e5e3a5f..0000000 --- a/app/helpers/id_card_employers_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module IdCardEmployersHelper -end diff --git a/app/helpers/welcome_helper.rb b/app/helpers/welcome_helper.rb deleted file mode 100644 index eeead45..0000000 --- a/app/helpers/welcome_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module WelcomeHelper -end diff --git a/app/javascript/controllers/benefits_template_picker_controller.js b/app/javascript/controllers/benefits_template_picker_controller.js index e7ff4af..ed3eb5d 100644 --- a/app/javascript/controllers/benefits_template_picker_controller.js +++ b/app/javascript/controllers/benefits_template_picker_controller.js @@ -26,7 +26,9 @@ export default class extends Controller { async #updateFields(templatePlanData) { const titleElement = this.titleTarget - titleElement.value = templatePlanData.title.match(/^(.*\d)k(?=\d)/i)[0].replace(/(\d)/, ' $1') + if (!titleElement.value) { + titleElement.value = templatePlanData.title.match(/^(.*\d)k(?=\d)/i)[0].replace(/(\d)/, ' $1') + } const benefitTargetsList = this.benefitTargets templatePlanData.plan_benefits.forEach(function(bene) { const targetElement = benefitTargetsList.find( diff --git a/app/javascript/controllers/font_validator_controller.js b/app/javascript/controllers/font_validator_controller.js new file mode 100644 index 0000000..35beb0b --- /dev/null +++ b/app/javascript/controllers/font_validator_controller.js @@ -0,0 +1,35 @@ +// app/javascript/controllers/font_validator_controller.js +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static targets = ["textField", "hiddenField", "countDisplayField"] + + connect() { + this.measure() + } + + measure() { + const text = this.textFieldTarget.value + const pixelWidth = this.getTextWidth(text, "bold 6px sans-serif") + + // Do something with the pixel width (e.g., store in a hidden field for Rails to read) + if (this.hasHiddenFieldTarget) { + this.hiddenFieldTarget.value = pixelWidth + this.countDisplayFieldTarget.textContent = `${pixelWidth}` + if (pixelWidth > 100) { + this.countDisplayFieldTarget.classList.add("text-brightlava") + } else { + this.countDisplayFieldTarget.classList.remove("text-brightlava") + } + } + } + + // Canvas measurement trick + getTextWidth(text, font) { + const canvas = document.createElement("canvas") + const context = canvas.getContext("2d") + context.font = font + const metrics = context.measureText(text) + return Math.ceil(metrics.width) + } +} \ No newline at end of file diff --git a/app/javascript/controllers/hello_controller.js b/app/javascript/controllers/hello_controller.js deleted file mode 100644 index bf3a3db..0000000 --- a/app/javascript/controllers/hello_controller.js +++ /dev/null @@ -1,16 +0,0 @@ -import { Controller } from "@hotwired/stimulus" - -export default class extends Controller { - static targets = [ "name", "output" ] - - connect() { - // this.element.textContent = "Hello World!" - console.log('Hello World hello_controller.js'); - } - - greet() { - console.log('greet'); - this.outputTarget.textContent = - `Hello, ${this.nameTarget.value}!` - } -} diff --git a/app/javascript/controllers/logo_upload_controller.js b/app/javascript/controllers/logo_upload_controller.js index cdeb740..b2d7dd3 100644 --- a/app/javascript/controllers/logo_upload_controller.js +++ b/app/javascript/controllers/logo_upload_controller.js @@ -3,7 +3,8 @@ import { Controller } from "@hotwired/stimulus"; export default class extends Controller { static values = { logoType: String, - employerName: String + employerName: String, + employerId: Number } static targets = ["preview", "previewContainer", "logoSelect", "logoIdField", "logoNameField", "initialLogoFile"]; @@ -89,8 +90,13 @@ export default class extends Controller { async uploadLogoToServer(logoFile) { console.log('in uploadLogoToServer'); + const employerId = this.employerIdValue + const formData = new FormData(); formData.append(`id_card_${this.logoTypeValue}_logo[logo_file]`, logoFile); + if (employerId) { + formData.append(`id_card_${this.logoTypeValue}_logo[employer_id]`, employerId); + } const csrfToken = document.querySelector("meta[name='csrf-token']").content; diff --git a/app/javascript/controllers/provider_update_controller.js b/app/javascript/controllers/provider_update_controller.js index 722513d..fd542b7 100644 --- a/app/javascript/controllers/provider_update_controller.js +++ b/app/javascript/controllers/provider_update_controller.js @@ -10,11 +10,11 @@ export default class extends Controller { syncDefaults() { const pnValue = this.providerNetworkFieldTarget.value if (pnValue == "Cigna") { - this.networkLogoFieldTarget.value = 1 - this.providerSectionFieldTarget.value = 30 - } else if (pnValue == "Medcost") { - this.networkLogoFieldTarget.value = 2 - this.providerSectionFieldTarget.value = 26 + this.networkLogoFieldTarget.value = 9 + this.providerSectionFieldTarget.value = 5 + } else if (pnValue == "MedCost") { + this.networkLogoFieldTarget.value = 7 + this.providerSectionFieldTarget.value = 4 } else { this.networkLogoFieldTarget.value = "" this.providerSectionFieldTarget.value = "" diff --git a/app/jobs/update_employer_job.rb b/app/jobs/update_employer_job.rb index 99f2866..93848fb 100644 --- a/app/jobs/update_employer_job.rb +++ b/app/jobs/update_employer_job.rb @@ -24,8 +24,8 @@ class UpdateEmployerJob < ApplicationJob plan_code = Vhcs::HlPlanCode.find_by(plan_key: pl_plan_key) pb_company_plan = Vhcs::PbCompanyPlans.find_by(pl_plan_key: pl_plan_key) - employer = Employer.find_or_create_by!(employer_identifier) - id_card_setup = employer.id_card_setup || employer.create_id_card_setup!(pl_plan_key: employer.pl_plan_key) + employer = Employer.find_or_create_by(employer_identifier) + id_card_setup = employer.id_card_setup || employer.build_id_card_setup(pl_plan_key: employer.pl_plan_key) full_sync = employer.previously_new_record? || full_sync unless group_number.present? group_number = Vhcs::PlPlanGroupCode.find_by(pl_plan_key: pl_plan_key).group_code @@ -51,9 +51,12 @@ class UpdateEmployerJob < ApplicationJob }) end - employer.update(employer_update_attrs) + employer.assign_attributes(employer_update_attrs) + if !employer.save && full_sync + employer.save(validate: false) + end - if [employer.pl_plan_key, employer.group_number, employer.company_pb_entity_key, employer.plan_id].all?(&:present?) + if !employer.initialized && [employer.pl_plan_key, employer.group_number, employer.company_pb_entity_key, employer.plan_id].all?(&:present?) employer.update(active: true) end @@ -64,13 +67,22 @@ class UpdateEmployerJob < ApplicationJob }) end - if full_sync + if full_sync || id_card_setup.print_name.blank? setup_update_attrs.merge!({ print_name: determine_card_print_name(pb_company_plan.company_pb_entity_key, pl_plan_key) }) end - id_card_setup.update(setup_update_attrs) + if id_card_setup.pl_plan_key.blank? && employer.pl_plan_key.present? + setup_update_attrs.merge!({ + pl_plan_key: employer.pl_plan_key + }) + end + + id_card_setup.assign_attributes(setup_update_attrs) + if !id_card_setup.save && full_sync + id_card_setup.save(validate: false) + end # plan_code = Vhcs::HlPlanCode.find_by(plan_key: employer.pl_plan_key) # employer.group_number = plan_code.group_number diff --git a/app/jobs/update_member_job.rb b/app/jobs/update_member_job.rb index be2e1ab..63ac4d6 100644 --- a/app/jobs/update_member_job.rb +++ b/app/jobs/update_member_job.rb @@ -19,7 +19,7 @@ class UpdateMemberJob < ApplicationJob ) if pb_products.present? && vw_mb_member[:social_security_number].present? - member = Member.find_or_create_by!(pb_entity_key: vw_mb_member[:pb_entity_key], employer_id: employer_id) + member = Member.find_or_create_by(pb_entity_key: vw_mb_member[:pb_entity_key], employer_id: employer_id) member.name = vw_mb_member[:full_name_last_name_first].titleize member.mb_member_key = vw_mb_member[:mb_member_key] member.family_id = vw_mb_member[:family_id] @@ -74,6 +74,7 @@ class UpdateMemberJob < ApplicationJob # else # end + member.save! puts "---- #{member.name}" end member.presence diff --git a/app/models/application_record.rb b/app/models/application_record.rb index 3a835b7..d1f1802 100644 --- a/app/models/application_record.rb +++ b/app/models/application_record.rb @@ -3,5 +3,5 @@ class ApplicationRecord < ActiveRecord::Base primary_abstract_class - establish_connection :baclight + establish_connection :primary end diff --git a/app/models/britton_web/employers.rb b/app/models/britton_web/employers.rb deleted file mode 100644 index a6140fa..0000000 --- a/app/models/britton_web/employers.rb +++ /dev/null @@ -1,21 +0,0 @@ -module BrittonWeb - class Employers < BrittonWebRecord - - # self.table_name = 'employers' - - alias_attribute :id, :id - alias_attribute :name, :name - alias_attribute :pl_plan_key, :pl_plan_key - alias_attribute :plan_id, :plan_id - alias_attribute :dental_plan, :dental_plan - alias_attribute :single_card_template, :single_card_template - alias_attribute :multiple_card_template, :multiple_card_template - alias_attribute :logo, :logo - alias_attribute :active, :active - alias_attribute :broker_id, :broker_id - alias_attribute :created_at, :created_at - alias_attribute :updated_at, :updated_at - - - end -end \ No newline at end of file diff --git a/app/models/britton_web/network_logos.rb b/app/models/britton_web/network_logos.rb deleted file mode 100644 index b342581..0000000 --- a/app/models/britton_web/network_logos.rb +++ /dev/null @@ -1,17 +0,0 @@ -module BrittonWeb - class NetworkLogos < BrittonWebRecord - - self.table_name = 'network_logos' - - alias_attribute :id, :id - alias_attribute :net_logo, :net_logo - alias_attribute :exception_type, :exception_type - alias_attribute :exception_value, :exception_value - alias_attribute :default, :default - alias_attribute :employer_id, :employer_id - alias_attribute :created_at, :created_at - alias_attribute :updated_at, :updated_at - - - end -end \ No newline at end of file diff --git a/app/models/concerns/employer_automation.rb b/app/models/concerns/employer_automation.rb index 0b78b39..e93789a 100644 --- a/app/models/concerns/employer_automation.rb +++ b/app/models/concerns/employer_automation.rb @@ -20,55 +20,56 @@ module EmployerAutomation } scope :in_automation_initilization, -> { - joins(:id_card_setup) + left_outer_joins(:id_card_setup) .where(initialized: false) .or( where(id_card_setup: {initialized: false}) - ) + ).distinct } - # scope :missing_keychain_values, -> { - # where(company_pb_entity_key: [nil, '']) - # .or(where(plan_id: [nil, ''])) - # .or(where(group_number: [nil, ''])) - # .or(where(pl_plan_key: [nil, ''])) - # } - scope :missing_keychain_initialization, -> { uninitialized.automation_ready } scope :uninitialized_id_card_setup, -> { - joins(:id_card_setup) + left_outer_joins(:id_card_setup) .where(id_card_setup: {initialized: false}) } scope :missing_plans, -> { - where.missing(:plans) - .or( - where( - id: joins(:plans) - .where(plans: { pb_product_key: [nil, ''] }) - .select(:id) - ) - ) + left_outer_joins(:plans) + .where(id_card_plans: { pb_product_key: [nil, ""] }) + .distinct } scope :has_plans, -> { - where.associated(:plans) - .where.not( - id: joins(:plans) - .where(plans: { pb_product_key: [nil, ''] }) - .select(:id) - ).distinct + left_outer_joins(:plans) + .where("id_card_plans.pb_product_key IS NOT NULL AND id_card_plans.pb_product_key != ''") + .distinct + } + + scope :missing_members, -> { + left_outer_joins(:members) + .where(members: { id: nil }) + .distinct + } + + scope :has_members, -> { + left_outer_joins(:members) + .where.not(members: { id: nil }) + .distinct } scope :missing_plans_initialization, -> { - uninitialized_id_card_setup.missing_plans + initialized.uninitialized_id_card_setup.missing_plans } scope :missing_members_initialization, -> { - uninitialized_id_card_setup.has_plans + initialized.uninitialized_id_card_setup.has_plans.missing_members + } + + scope :ready_for_id_card_activation, -> { + initialized.uninitialized_id_card_setup.has_members } scope :with_active_id_card_setup, -> { @@ -76,62 +77,11 @@ module EmployerAutomation .where(id_card_setup: {active: true}) } - # scope :with_keychain_values, -> { - # where.not( - # pl_plan_key: [nil, ''], - # group_number: [nil, ''], - # company_pb_entity_key: [nil, ''], - # plan_id: [nil, ''] - # ) - # } - scope :deactivated, -> { inactive.initialized } - # Employer.joins(:id_card_setup) - # .left_outer_joins(:plans) - # .where(plans: { pb_product_key: [nil, ''] }) - - # .group('users.id') # Group by user ID - # .having('COUNT(posts.id) = 0') - - # Employer.left_outer_joins(:plans) - # .where(plans: { id: nil }) - # .or(Employer.where(plans: { pb_product_key: [nil, ''] })) - - # Employer.where.missing(:plans) - # .or(Employer.joins(:plans).where(plans: { pb_product_key: [nil, ''] })) - - # Employer.joins(id_card_setup: :plans).where.not("plans.id_card_setup_id = id_card_setup.id").or - # (where(plans: { pb_product_key: [nil, ''] })) - - # scope :with_survey_and_no_questions, -> { - # joins(:survey) # join has_one - # .left_joins(survey: :questions) # join has_many through has_one - # .where(questions: { id: nil }) # filter where has_many is empty - # } - - # scope :missing_initial_members, -> { - # new_groups.with_plans - # } end -# class_methods do -# # Methods in this block become class methods of the including class. -# def count_all_visible -# visible.count -# end -# end - - # Any other methods defined here become instance methods automatically. - # def up_to_date? - # self.pl_plan_key.present? && - # self.company_pb_entity_key.present? && - # self.plan_id.present? && - # self.group_number.present? && - # self.effective_date.present? - # end - def sync_members_with_vhcs AutomationService::EmployerMembersUpdate.new(pl_plan_key).call end diff --git a/app/models/concerns/member_automation.rb b/app/models/concerns/member_automation.rb index 509f9e6..5d1c713 100644 --- a/app/models/concerns/member_automation.rb +++ b/app/models/concerns/member_automation.rb @@ -1,29 +1,6 @@ module MemberAutomation extend ActiveSupport::Concern -# included do -# # Code in this block becomes instance methods or class macros (like scopes, validations, associations) in the including class. -# scope :visible, -> { where(visible: true) } -# scope :invisible, -> { where(visible: false) } -# validates :status, inclusion: { in: %w(visible invisible), message: "%{value} is not a valid status" } -# end - -# class_methods do -# # Methods in this block become class methods of the including class. -# def count_all_visible -# visible.count -# end -# end - - # Any other methods defined here become instance methods automatically. - # def up_to_date? - # self.pl_plan_key.present? && - # self.company_pb_entity_key.present? && - # self.plan_id.present? && - # self.group_number.present? && - # self.effective_date.present? - # end - def sync_with_vhcs AutomationService::MemberUpdate.new(self.employer.pl_plan_key, self.pb_entity_key).call end diff --git a/app/models/employer.rb b/app/models/employer.rb index 68509ce..cecade6 100644 --- a/app/models/employer.rb +++ b/app/models/employer.rb @@ -4,12 +4,18 @@ class Employer < ApplicationRecord accepts_nested_attributes_for :members, allow_destroy: true, reject_if: :all_blank has_one :id_card_setup, class_name: 'IdCard::Setup', dependent: :destroy has_many :plans, class_name: 'IdCard::Plan', through: :id_card_setup + has_many :print_data, class_name: 'IdCard::PrintData', dependent: :destroy + + validates :name, :slug, :effective_date, presence: true + validates :group_number, :pl_plan_key, :company_pb_entity_key, :plan_id, presence: true, if: -> { initialized } + + validates :name, :slug, :group_number, :pl_plan_key, :company_pb_entity_key, :plan_id, uniqueness: true, allow_blank: true scope :active, -> { where(active: true) } scope :inactive, -> { where(active: false) } - before_save :create_slug, if: :will_save_change_to_name? - before_save :active_initialized_check, if: :will_save_change_to_active? + before_validation :create_slug, if: :will_save_change_to_name? + before_validation :active_initialized_check, if: :will_save_change_to_active? def create_slug diff --git a/app/models/id_card/employer_logo.rb b/app/models/id_card/employer_logo.rb index e62ccc6..4287994 100644 --- a/app/models/id_card/employer_logo.rb +++ b/app/models/id_card/employer_logo.rb @@ -1,7 +1,9 @@ module IdCard class EmployerLogo < ApplicationRecord - # before_validation :resize_logo, if: :image_data_changed? - # before_validation :calculate_aspect_ratio, if: :image_data_changed? + belongs_to :setup, optional: true + validates :filename, :image_data, :content_type, :aspect_ratio, presence: true + validates :filename, uniqueness: true + before_validation :process_image, if: :image_data_changed? private @@ -27,24 +29,5 @@ module IdCard end end - # def resize_logo - # image = Vips::Image.new_from_buffer(self.image_data, "") - - # processed_image = ImageProcessing::Vips - # .source(image) - # .resize_to_limit(nil, 200) - # .call - - # self.image_data = processed_image.read - # end - - # def calculate_aspect_ratio - # image_io = StringIO.new(self.image_data) - # width, height = FastImage.size(image_io) - # image_ratio = width.to_f / height - # if image_ratio - # self.aspect_ratio = image_ratio.round(2) - # end - # end end end diff --git a/app/models/id_card/field_exception.rb b/app/models/id_card/field_exception.rb index b5cf0b7..94b26bd 100644 --- a/app/models/id_card/field_exception.rb +++ b/app/models/id_card/field_exception.rb @@ -6,6 +6,8 @@ module IdCard serialize :exception_values, coder: JSON + validates :exception_type, :exception_values, presence: true + VALID_TYPES = ['family_id', 'zipcode', 'state'].freeze before_validation :format_exception_values, if: :exception_values_changed? diff --git a/app/models/id_card/field_exception_item.rb b/app/models/id_card/field_exception_item.rb index 49fcdc4..f7fcdd9 100644 --- a/app/models/id_card/field_exception_item.rb +++ b/app/models/id_card/field_exception_item.rb @@ -5,6 +5,8 @@ module IdCard belongs_to :provider_section, optional: true validate :only_one_exception_field_present + validates :field_name, presence: true + validates :field_name, uniqueness: { scope: :field_exception_id } FIELDS_TO_VALIDATE = [:field_value, :network_logo_id, :provider_section_id].freeze diff --git a/app/models/id_card/network_logo.rb b/app/models/id_card/network_logo.rb index 2231aab..c4b960d 100644 --- a/app/models/id_card/network_logo.rb +++ b/app/models/id_card/network_logo.rb @@ -1,7 +1,8 @@ module IdCard class NetworkLogo < ApplicationRecord - # before_validation :resize_logo, if: :image_data_changed? - # before_validation :calculate_aspect_ratio, if: :image_data_changed? + validates :filename, :image_data, :content_type, :aspect_ratio, presence: true + validates :filename, uniqueness: true + before_validation :process_image, if: :image_data_changed? scope :defaults, -> { where(default: true) } @@ -41,25 +42,5 @@ module IdCard end end - # def resize_logo - # image = Vips::Image.new_from_buffer(self.image_data, "") - - # processed_image = ImageProcessing::Vips - # .source(image) - # .resize_to_limit(nil, 400) - # .call - - # self.image_data = processed_image.read - # end - - # def calculate_aspect_ratio - # image_io = StringIO.new(image_data) - # width, height = FastImage.size(image_io) - # image_ratio = width.to_f / height - # if image_ratio - # self.aspect_ratio = image_ratio.round(2) - # end - # end - end end diff --git a/app/models/id_card/plan.rb b/app/models/id_card/plan.rb index 9ff6610..32358aa 100644 --- a/app/models/id_card/plan.rb +++ b/app/models/id_card/plan.rb @@ -4,6 +4,11 @@ module IdCard has_many :plan_benefits, dependent: :destroy accepts_nested_attributes_for :plan_benefits, allow_destroy: true, reject_if: :all_blank + validates :title, presence: true + validates :pb_product_key, :pl_plan_key, presence: true, if: -> { setup&.active } + validates :pb_product_key, uniqueness: true, allow_nil: true + validate :validate_plan_benefits_count, unless: -> { template } + scope :templates, -> { where(template: true) } FARIOS_BENEFIT_FIELDS = ["Primary Visit", "Specialist Visit", "Urgent Care", "INN-Ind Ded", "INN-Family Ded", "OON-Ind Ded", "OON-Family Ded", "Co-Insurance", "INN-Ind OOP", "INN-Family OOP", "OON-Ind OOP", "OON-Family OOP", "Emergency Room", "Preventive Care"].freeze @@ -39,10 +44,6 @@ module IdCard class << self - # def templates - # active_templates.map(&:format_template) - # end - def permitted_params(params) params.require(:id_card_setup).permit( plans_attributes: [ @@ -66,11 +67,20 @@ module IdCard private - def build_and_create_default_benefits - benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) - benefits.each do |ben| - id_card_plan_benefits.new(benefit_desc: ben.benefit_desc, sequence: ben.sequence) + def validate_plan_benefits_count + plan_benefits_size = plan_benefits.size + template_benefits_size = case setup&.card_template + when "TandemlocIDCard" + TANDEMLOC_BENEFIT_FIELDS.size + when "SmartIDCard" + SMART_BENEFIT_FIELDS.size + else + FARIOS_BENEFIT_FIELDS.size + end + unless plan_benefits_size == template_benefits_size + errors.add(:base, "Plan Benefits size (#{plan_benefits_size}) does not match ID Card Template (#{template_benefits_size})") end end + end end \ No newline at end of file diff --git a/app/models/id_card/plan_benefit.rb b/app/models/id_card/plan_benefit.rb index 1846981..6a20201 100644 --- a/app/models/id_card/plan_benefit.rb +++ b/app/models/id_card/plan_benefit.rb @@ -1,5 +1,8 @@ module IdCard class PlanBenefit < ApplicationRecord belongs_to :plan + + validates :benefit_desc, :sequence, presence: true + validates :benefit, presence: true, unless: :new_record? end end \ No newline at end of file diff --git a/app/models/id_card/print_data.rb b/app/models/id_card/print_data.rb index 5823234..bdc0b80 100644 --- a/app/models/id_card/print_data.rb +++ b/app/models/id_card/print_data.rb @@ -1,14 +1,25 @@ module IdCard class PrintData < ApplicationRecord + belongs_to :employer, class_name: 'Employer' STRING_ATTRIBUTES = %w[provider_line_1 provider_line_2 provider_line_3 provider_line_4 provider_line_5 provider_line_6 provider_line_7 provider_line_8 provider_line_9 provider_line_10 provider_line_11 provider_line_12 claim_to_1 claim_to_2 claim_to_3 claim_to_4 claim_to_5 claim_to_6 claim_to_7 claim_to_8 claim_to_9 claim_to_10 claim_to_11 claim_to_12 dependent_1 dependent_2 dependent_3 dependent_4 dependent_5 dependent_6 dependent_7 dependent_8 dental_coverage] before_validation :assign_blank_strings_to_unassigned_params + private + + def has_jasper_sorting_fields + missing_sample_card_fields = sample_plan_title.blank? + missing_member_card_fields = employer_name.blank? || full_name_last_name_first.blank? + + if missing_sample_card_fields || missing_member_card_fields + errors.add(:base, "Required field for Jasper Server is missing") + end + end + def assign_blank_strings_to_unassigned_params STRING_ATTRIBUTES.each do |attr| - # Use the blank? method which checks for nil, false, empty, or whitespace strings - self[attr] = "" if self[attr].blank? + self[attr] = "" if self[attr].blank? end end end diff --git a/app/models/id_card/provider_section.rb b/app/models/id_card/provider_section.rb index 4337e49..c272443 100644 --- a/app/models/id_card/provider_section.rb +++ b/app/models/id_card/provider_section.rb @@ -5,6 +5,7 @@ module IdCard def self.permitted_params(params) params.require(:id_card_setup).require(:provider_section).permit( + :title, :provider_line_1, :provider_line_2, :provider_line_3, @@ -30,7 +31,15 @@ module IdCard :claim_to_11, :claim_to_12 ) - end + end + + def display_title + if self.default + "Default #{self.title}" + else + self.title + end + end end end \ No newline at end of file diff --git a/app/models/id_card/setup.rb b/app/models/id_card/setup.rb index e98de17..c48999a 100644 --- a/app/models/id_card/setup.rb +++ b/app/models/id_card/setup.rb @@ -1,14 +1,21 @@ module IdCard class Setup < ApplicationRecord belongs_to :employer, class_name: 'Employer' - belongs_to :employer_logo, optional: true belongs_to :network_logo, optional: true belongs_to :provider_section, optional: true belongs_to :rx_section, optional: true + has_one :employer_logo, dependent: :destroy has_many :plans, dependent: :destroy has_many :field_exceptions, dependent: :destroy + validates :print_name, :network_provider, :card_template, :employer_logo, :network_logo_id, + :provider_section_id, :rx_section_id, presence: true, unless: :new_record? + validates :pl_plan_key, :rx_group_number, presence: true, if: -> { initialized } + validate :validate_print_name_fits_on_card + + attr_accessor :print_name_pixel_width + accepts_nested_attributes_for :plans, allow_destroy: true, reject_if: :all_blank accepts_nested_attributes_for :field_exceptions, allow_destroy: true, reject_if: :all_blank @@ -16,7 +23,7 @@ module IdCard scope :active, -> { where(active: true) } - FORM_COLORS = ['atmosphere', 'verdigris', 'bluemana', 'cobalt'] + FORM_COLORS = ['atmosphere', 'verdigris-vivid', 'cobalt-vivid', 'bluemana'] MODULE_COLOR = 'atmosphere' before_save :active_initialized_check, if: :will_save_change_to_active? @@ -27,14 +34,6 @@ module IdCard end end - # def employer_logo_filename - # self.employer_logo.filename - # end - - # def network_logo_filename - # self.network_logo.filename - # end - def build_plan_with_default_benefits(attributes = {}) plan = plans.new(attributes) benefits = IdCardBenefitsTemplate.find_by(title: "BLANK").id_card_benefits.sort_by(&:sequence) @@ -45,7 +44,28 @@ module IdCard end def has_field_exceptions? - self.field_exceptions.present? + field_exceptions.present? + end + + def sample_card_print_ready? + print_name.present? && + card_template.present? && + employer_logo.present? && + network_logo_id.present? && + provider_section_id.present? && + rx_section_id.present? && + plans.present? + end + + def member_cards_print_ready? + sample_card_print_ready? && + plans.present? && + plans.all? { |plan| plan.pb_product_key.present? } && + employer.members.present? + end + + def activation_ready? + member_cards_print_ready? && !active end def field_exceptions_card_attributes_by_member_id(member_array = nil) @@ -54,17 +74,6 @@ module IdCard end card_fes = self.field_exceptions.includes(:field_exception_items).in_order_of(:exception_type, IdCard::FieldException::VALID_TYPES) - # fe_by_value = card_fes.in_order_of(:exception_type, IdCard::FieldException::VALID_TYPES).group_by(&:exception_type) - # .transform_values { |fes| fes.map { |fe| [fe.id, fe.exception_values] }.to_h } - # .compact_blank - - # field_exception_types = card_fes.pluck(:exception_type).uniq - # if field_exception_types.include?("family_id") - # members = Member.where(pb_entity_key: member_array) - # end - # if field_exception_types.intersect?(["state", "zipcode"]) - # member_addresses = Vhcs::PbEntityAddress.where(pb_entity_key: member_array) - # end card_exceptions_map = {} card_fes.each do |fe| if fe.exception_type == "family_id" @@ -90,14 +99,22 @@ module IdCard def self.permitted_params(params) params.require(:id_card_setup).permit( :print_name, + :print_name_pixel_width, :network_provider, :card_template, :rx_group_number, - :employer_logo_id, :network_logo_id, :rx_section_id, :provider_section_id ) end + + private + + def validate_print_name_fits_on_card + if print_name_pixel_width.to_i > 100 + errors.add(:print_name, "Too Long For Card") + end + end end end diff --git a/app/models/member.rb b/app/models/member.rb index 6d0f6f0..ec1e352 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -4,6 +4,14 @@ class Member < ApplicationRecord belongs_to :employer serialize :dependents, coder: JSON + + validates :pb_entity_key, presence: true + validates :name, :family_id, :mb_member_key, :pl_plan_key, + :id_card_display_name, presence: true, unless: :new_record? + validates :division, presence: true, if: -> { employer.id_card_setup.has_divisions } + validates :coverage_class, :dental_plan_key, presence: true, if: -> { employer.id_card_setup.has_dental } + validates :name, :mb_member_key, :pb_entity_key, uniqueness: true + before_validation :format_dependents, if: :dependents_changed? def id_card_field_exception_values @@ -23,7 +31,4 @@ class Member < ApplicationRecord end end - - - end diff --git a/app/models/old/alternate_network_logo.rb b/app/models/old/alternate_network_logo.rb deleted file mode 100644 index 1d5097f..0000000 --- a/app/models/old/alternate_network_logo.rb +++ /dev/null @@ -1,16 +0,0 @@ -class AlternateNetworkLogo < ApplicationRecord - belongs_to :employer - - # before_save :process_network_logo - - def process_network_logo - if self.network_logo.present? && !self.network_logo.is_a?(String) - self.employer_setup_process.card_logo_files.new( - filename: self.network_logo.filename, - logo_type: 'network', - image: self.network_logo.data, - pl_plan_key: self.employer_setup_process.pl_plan_key || "" - ) - end - end -end \ No newline at end of file diff --git a/app/models/old/card_logo_file.rb b/app/models/old/card_logo_file.rb deleted file mode 100644 index 9c0d5fe..0000000 --- a/app/models/old/card_logo_file.rb +++ /dev/null @@ -1,14 +0,0 @@ -class CardLogoFile < ApplicationRecord - has_many :employer_card_logos, dependent: :destroy - has_many :employers, through: :employer_card_logos - - before_save :round_aspect_ratio - - private - - def round_aspect_ratio - if self.aspect_ratio.present? - self.aspect_ratio = self.aspect_ratio.round(2) - end - end -end diff --git a/app/models/old/employer_card_logo.rb b/app/models/old/employer_card_logo.rb deleted file mode 100644 index 2aaf61e..0000000 --- a/app/models/old/employer_card_logo.rb +++ /dev/null @@ -1,5 +0,0 @@ -class EmployerCardLogo < ApplicationRecord - belongs_to :employer - belongs_to :card_logo_file - -end diff --git a/app/models/old/employer_setup_process.rb b/app/models/old/employer_setup_process.rb deleted file mode 100644 index e841088..0000000 --- a/app/models/old/employer_setup_process.rb +++ /dev/null @@ -1,106 +0,0 @@ -class EmployerSetupProcess < ApplicationRecord - has_many :plans, dependent: :destroy - accepts_nested_attributes_for :plans, allow_destroy: true, reject_if: :all_blank - - has_many :alternate_network_logos, dependent: :destroy - accepts_nested_attributes_for :alternate_network_logos, allow_destroy: true, reject_if: :all_blank - - has_many :card_logo_files - - # before_save :process_employer_logo - before_save :create_slug, if: :new_record? - - def process_employer_logo - if self.employer_logo.present? && !self.employer_logo.is_a?(String) - self.card_logo_files.new( - filename: self.employer_logo.filename, - logo_type: 'employer', - image: self.employer_logo.data, - pl_plan_key: self.pl_plan_key || "" - ) - end - end - - def create_slug - self.slug = employer_trimmed_name.parameterize - end - - def employer_name_to_logo_filename(extension) - self.employer_trimmed_name.titleize.gsub(/\s+/, '').concat('Logo').concat(extension.downcase) - end - - def employer_trimmed_name - regex_source = Regexp.union(["health", "plan", "the", "inc", "llc"]).source - case_insensitive_regex = Regexp.new(regex_source, "i") - self.employer_name.gsub(case_insensitive_regex, "").squish - end - - def self.permitted_params(params) - params.require(:employer_setup_process).permit( - :employer_name, - :group_number, - :pl_plan_key, - :effective_date, - :employer_logo, - :network_provider, - plans_attributes: [ - :id, - :title, - :plan_id, - :_destroy, - plan_benefits_attributes: [ - :id, - :benefit_desc, - :benefit, - :sequence, - :_destroy, - ] - ], - alternate_network_logos_attributes: [ - :id, - :network_logo, - :exception_type, - :exception_value, - :_destroy - ] - ) - end - - def save_to_prod - - VhcsRecord.transaction do - Vhcs::HlPlanCode.create!( - group_number: self.group_number, - medical_number: self.group_number, - dental_number: '', - plan_key: self.pl_plan_key, - effect_date: self.effective_date - ) - - # Replace fairos_info with template like for benefits - fairos_info = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - Vhcs::HlrxCrosRef.cdarreate!( - group_no: self.group_number, - rx_group_id: self.group_number, - help_desk: fairos_info.help_desk, - customer_service: fairos_info.customer_service, - web_url: fairos_info.web_url, - pl_plan_key: self.pl_plan_key - ) - - self.plans.each_with_index do |plan, i| - plan.plan_benefits.each do |bene| - Vhcs::HlEgglestonCardBenefit.create!( - plan_id: plan.plan_id, - benefit_desc: bene.benefit_desc, - benefit: bene.benefit, - sequence: bene.sequence, - plan_key: self.pl_plan_key - ) - end - end - end - - end - -end diff --git a/app/models/old/id_card_benefit.rb b/app/models/old/id_card_benefit.rb deleted file mode 100644 index f903ec7..0000000 --- a/app/models/old/id_card_benefit.rb +++ /dev/null @@ -1,3 +0,0 @@ -class IdCardBenefit < ApplicationRecord - belongs_to :id_card_benefits_template -end diff --git a/app/models/old/id_card_benefits_template.rb b/app/models/old/id_card_benefits_template.rb deleted file mode 100644 index d725264..0000000 --- a/app/models/old/id_card_benefits_template.rb +++ /dev/null @@ -1,5 +0,0 @@ -class IdCardBenefitsTemplate < ApplicationRecord - - has_many :id_card_benefits, dependent: :destroy - -end diff --git a/app/models/user.rb b/app/models/user.rb new file mode 100644 index 0000000..4c1f5dd --- /dev/null +++ b/app/models/user.rb @@ -0,0 +1,9 @@ +class User < ApplicationRecord + # Include default devise modules. Others available are: + # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable + devise :database_authenticatable, :registerable, + :recoverable, :rememberable, :validatable, + :lockable, :trackable + + enum role: { user: 0, admin: 1, dev: 2 } +end diff --git a/app/models/vhcs/hlid_card_egg_data.rb b/app/models/vhcs/hlid_card_egg_data.rb index 4a6bad4..0515fe3 100644 --- a/app/models/vhcs/hlid_card_egg_data.rb +++ b/app/models/vhcs/hlid_card_egg_data.rb @@ -148,7 +148,6 @@ module Vhcs contact_line_1: self.contact_line_1, contact_line_2: self.contact_line_2, contact_line_3: self.contact_line_3, - group_number: self.group_number, family_id: self.family_id, group_no: self.group_no, rx_group: self.rx_group, diff --git a/app/models/vhcs/hlid_card_provider_old.rb b/app/models/vhcs/hlid_card_provider_old.rb deleted file mode 100644 index 99f61bc..0000000 --- a/app/models/vhcs/hlid_card_provider_old.rb +++ /dev/null @@ -1,48 +0,0 @@ -module Vhcs - class HlidCardProvider < VhcsRecord - - self.table_name = 'HLIDCardProvider' - - alias_attribute :provider_code, :ProviderCode - alias_attribute :provider_line_1, :ProviderLine1 - alias_attribute :provider_line_2, :ProviderLine2 - alias_attribute :provider_line_3, :ProviderLine3 - alias_attribute :provider_line_4, :ProviderLine4 - alias_attribute :provider_line_5, :ProviderLine5 - alias_attribute :mail_to, :MailTo - alias_attribute :mail_to_2, :MailTo2 - alias_attribute :contact_line_1, :ContactLine1 - alias_attribute :contact_line_2, :ContactLine2 - alias_attribute :contact_line_3, :ContactLine3 - alias_attribute :group_number, :GroupNumber - alias_attribute :claim_to_1, :ClaimTo1 - alias_attribute :claim_to_2, :ClaimTo2 - alias_attribute :claim_to_3, :ClaimTo3 - alias_attribute :claim_to_4, :ClaimTo4 - alias_attribute :claim_to_5, :ClaimTo5 - alias_attribute :claim_to_6, :ClaimTo6 - alias_attribute :claim_to_7, :ClaimTo7 - alias_attribute :claim_to_8, :ClaimTo8 - alias_attribute :claim_to_9, :ClaimTo9 - alias_attribute :claim_to_10, :ClaimTo10 - alias_attribute :claim_to_11, :ClaimTo11 - alias_attribute :provider_line_6, :ProviderLine6 - alias_attribute :provider_line_7, :ProviderLine7 - alias_attribute :provider_line_8, :ProviderLine8 - alias_attribute :provider_line_9, :ProviderLine9 - alias_attribute :provider_line_10, :ProviderLine10 - alias_attribute :provider_line_11, :ProviderLine11 - alias_attribute :rx_group_id, :RXGroupId - alias_attribute :rx_contact, :RXContact - alias_attribute :provider_lookup_1, :ProviderLookup1 - alias_attribute :provider_lookup_2, :ProviderLookup2 - alias_attribute :precert1, :Precert1 - alias_attribute :precert2, :Precert2 - alias_attribute :precert3, :Precert3 - alias_attribute :precert4, :Precert4 - alias_attribute :precert5, :Precert5 - alias_attribute :precert6, :Precert6 - - - end -end \ No newline at end of file diff --git a/app/models/vhcs/hlrx_cros_ref_old.rb b/app/models/vhcs/hlrx_cros_ref_old.rb deleted file mode 100644 index e4c6326..0000000 --- a/app/models/vhcs/hlrx_cros_ref_old.rb +++ /dev/null @@ -1,15 +0,0 @@ -module Vhcs - class HlrxCrosRef < VhcsRecord - - self.table_name = 'HLRXCrosRef' - - alias_attribute :group_no, :GroupNo - alias_attribute :rx_group_id, :RXGroupID - alias_attribute :help_desk, :HelpDesk - alias_attribute :customer_service, :CustomerService - alias_attribute :web_url, :WebUrl - alias_attribute :pl_plan_key, :PLPlanKey - - - end -end \ No newline at end of file diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb new file mode 100644 index 0000000..be644fe --- /dev/null +++ b/app/policies/application_policy.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +class ApplicationPolicy + attr_reader :user, :record + + def initialize(user, record) + @user = user + @record = record + end + + def index? + false + end + + def show? + false + end + + def create? + false + end + + def new? + create? + end + + def update? + false + end + + def edit? + update? + end + + def destroy? + false + end + + class Scope + def initialize(user, scope) + @user = user + @scope = scope + end + + def resolve + raise NoMethodError, "You must define #resolve in #{self.class}" + end + + private + + attr_reader :user, :scope + end +end diff --git a/app/queries/get_all_id_card_data_by_plan_tpa_query.rb b/app/queries/get_all_id_card_data_by_plan_tpa_query.rb index 6f08b6a..a7a7dc5 100644 --- a/app/queries/get_all_id_card_data_by_plan_tpa_query.rb +++ b/app/queries/get_all_id_card_data_by_plan_tpa_query.rb @@ -1,4 +1,4 @@ -class GetAllIDCardDataByPlanTPAQuery +class GetAllIdCardDataByPlanTpaQuery def initialize(pl_plan_key) @pl_plan_key = ActiveRecord::Base.connection.quote(pl_plan_key) diff --git a/app/queries/temp.rb b/app/queries/temp.rb deleted file mode 100644 index e69de29..0000000 diff --git a/app/services/automation_service/batch_employer_update.rb b/app/services/automation_service/batch_employer_update.rb index 5272dd4..7166565 100644 --- a/app/services/automation_service/batch_employer_update.rb +++ b/app/services/automation_service/batch_employer_update.rb @@ -1,8 +1,9 @@ module AutomationService class BatchEmployerUpdate - def initialize(pl_plan_keys = nil) + def initialize(pl_plan_keys = nil, full_sync = false) @pl_plan_keys = pl_plan_keys + @full_sync = full_sync end def call @@ -16,7 +17,7 @@ module AutomationService employer_update_futures = employer_plan_headers.map do |employer_plan_header| Concurrent::Future.execute do ActiveRecord::Base.connection_pool.with_connection do - UpdateEmployerJob.perform_later(employer_plan_header: employer_plan_header) + UpdateEmployerJob.perform_later(employer_plan_header: employer_plan_header, full_sync: @full_sync) end end end diff --git a/app/services/automation_service/employer_members_update.rb b/app/services/automation_service/employer_members_update.rb index 9da3d28..ecbf99d 100644 --- a/app/services/automation_service/employer_members_update.rb +++ b/app/services/automation_service/employer_members_update.rb @@ -10,13 +10,7 @@ module AutomationService card_setup = employer.id_card_setup puts "-- #{employer.name}" - # employer_members =[] vw_mb_members = Vhcs::VwmbMember.where(enrollee_type_value_id: 1, pl_plan_key: @pl_plan_key).select(:mb_member_key, :pb_entity_key, :pl_plan_key, :family_id, :full_name_last_name_first, :social_security_number) - # vw_mb_members.each do |vw_mb_member| - # member = UpdateMemberJob.perform_now(@pb_entity_key, employer.id, card_setup.has_divisions, card_setup.has_dental, true, vw_mb_member) - # end - # employer.members = employer_members - # employer.save member_update_futures = vw_mb_members.map do |vw_mb_member| Concurrent::Future.execute do @@ -28,7 +22,7 @@ module AutomationService member_updates = member_update_futures.map(&:value).compact employer.members = member_updates - if member_updates.empty? && employer.id_card_setup.active + if employer.initialized && card_setup.initialized && member_updates.empty? employer.active = false end employer.save diff --git a/app/services/automation_service/employer_plans_update.rb b/app/services/automation_service/employer_plans_update.rb index 6f14f3b..26737a0 100644 --- a/app/services/automation_service/employer_plans_update.rb +++ b/app/services/automation_service/employer_plans_update.rb @@ -6,14 +6,7 @@ module AutomationService end def call - # employer = Employer.includes(:id_card_setup).find_by(pl_plan_key: @pl_plan_key) - # card_setup = employer.id_card_setup UpdateEmployerPlansJob.new.perform(@pl_plan_key) - # if employer.present? - # employer.save - # else - # Member.find_by(pb_entity_key: vw_mb_member[:pb_entity_key]).destroy - # end end end diff --git a/app/services/automation_service/employer_update.rb b/app/services/automation_service/employer_update.rb index 0af2169..3ba832e 100644 --- a/app/services/automation_service/employer_update.rb +++ b/app/services/automation_service/employer_update.rb @@ -7,17 +7,8 @@ module AutomationService end def call - # employer = Employer.includes(:id_card_setup).find_by(employer_identifier: @employer_identifier) - # card_setup = employer.id_card_setup UpdateEmployerJob.new.perform(employer_identifier: @employer_identifier, full_sync: @full_sync) - # if employer.present? - # employer.save - # else - # Member.find_by(pb_entity_key: vw_mb_member[:pb_entity_key]).destroy - # end end end -end - -# AutomationService::MemberUpdate('13', 337710) \ No newline at end of file +end \ No newline at end of file diff --git a/app/services/automation_service/member_update.rb b/app/services/automation_service/member_update.rb index 215c6ce..3f4c5e0 100644 --- a/app/services/automation_service/member_update.rb +++ b/app/services/automation_service/member_update.rb @@ -19,5 +19,3 @@ module AutomationService end end - -# AutomationService::MemberUpdate('13', 337710) \ No newline at end of file diff --git a/app/services/benefits_word_doc_processor_old.rb b/app/services/benefits_word_doc_processor_old.rb deleted file mode 100644 index 960f929..0000000 --- a/app/services/benefits_word_doc_processor_old.rb +++ /dev/null @@ -1,163 +0,0 @@ -class WordDocProcessorOld - - def initialize(word_doc, process=nil) - @word_doc = word_doc - if process - @process = process - else - @process = EmployerSetupProcess.new - end - end - - def call - doc = Docx::Document.open(@word_doc) - - index = 40 - - general_information = doc.paragraphs.slice(0, index) - plan_information = doc.paragraphs.slice(index + 1..) - - - general_fields(general_information) - plans(plan_information) - employer_logo() - - @process - - end - - private - - def general_fields(general_information) - fields = ['Group Number:', 'Employer Name:', 'Group Effective Date:'] - general_information.each do |gi| - field_string = gi.to_s - if field_string.include?('Group Number:') - value = field_string.delete_prefix('Group Number:').strip - if is_number?(value) - @process.group_number = value - end - elsif field_string.include?('Employer Name:') - value = field_string.delete_prefix('Employer Name:').strip - @process.name = value - elsif field_string.include?('Group Effective Date:') - value = field_string.delete_prefix('Group Effective Date:').strip - @process.effective_date = value - end - end - end - - def employer_logo - extracted_images = [] - Zip::File.open(@word_doc) do |zip_file| - zip_file.each do |entry| - if entry.name.start_with?('word/media/') && !entry.directory? - filename = File.basename(entry.name) - image_data = entry.get_input_stream.read - extracted_images << { filename: filename, data: image_data } - end - end - end - if extracted_images.length > 1 - @process.employer_logo = @process.name.titleize.gsub(/\s+/, '').concat("Logo.png") - # same file logic - end - end - - def plans(plan_information) - plans_array = [] - plan_information.each_with_index do |pin, i| - if pin.to_s.match?(/\d*\.?\d+k/i) - new_plan = {title: pin.to_s.strip, start_index: i, benefits: []} - plans_array.push(new_plan) - end - end - - plans_array.each do |pl| - new_plan = Plan.create(title: pl[:title], employer_setup_process: @process) - plan_fields = plan_information.slice(pl[:start_index] + 1, 14) - plan_fields.each_with_index do |pf, i| - field_string = pf.to_s - if field_string.strip.length > 1 - case field_string - when ->(string) { string.include?("Physician Visit") } - value = field_string.delete_prefix("Physician Visit") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Primary Visit") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Specialist Visit") } - value = field_string.delete_prefix("Specialist Visit") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Specialist Visit") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Urgent Care") } - value = field_string.delete_prefix("Urgent Care") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Urgent Care") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Individual Deductible (in network )") } - value = field_string.delete_prefix("Individual Deductible (in network )") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "INN–Ind Ded") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Family Deductible(in network )") } - value = field_string.delete_prefix("Family Deductible(in network )") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "INN–Family Ded") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Individual Deductible (out of network)") } - value = field_string.delete_prefix("Individual Deductible (out of network)") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "OON–Ind Ded") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Family Deductible (out of network) ") } - value = field_string.delete_prefix("Family Deductible (out of network) ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "OON–Family Ded") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Co-Insurance") } - value = field_string.delete_prefix("Co-Insurance") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Co-Insurance") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Out-of-Pocket(in network) ") } - value = field_string.delete_prefix("Out-of-Pocket(in network) ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "INN–Ind OOP") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Out-of-Pocket Family(in network) ") } - value = field_string.delete_prefix("Out-of-Pocket Family(in network) ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "INN–Family OOP") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Out-of-Pocket(out of network) ") } - value = field_string.delete_prefix("Out-of-Pocket(out of network) ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "OON–Ind OOP") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Out-of-Pocket Family (out of network) ") } - value = field_string.delete_prefix("Out-of-Pocket Family (out of network) ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "OON–Family OOP") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Emergency Room ") } - value = field_string.delete_prefix("Emergency Room ") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Emergency Room") - new_benefit.benefit = value - new_benefit.save - when ->(string) { string.include?("Preventive Care") } - value = field_string.delete_prefix("Preventive Care") - new_benefit = new_plan.plan_benefits.find_by(benefit_desc: "Preventive Care") - new_benefit.benefit = value - new_benefit.save - end - end - end - end - end - - def is_number?(string) - true if Float(string) rescue false - end - -end \ No newline at end of file diff --git a/app/services/benefits_word_doc_service/map_employer_information.rb b/app/services/benefits_word_doc_service/map_employer_information.rb deleted file mode 100644 index 27bf91d..0000000 --- a/app/services/benefits_word_doc_service/map_employer_information.rb +++ /dev/null @@ -1,76 +0,0 @@ -module BenefitsWordDocService - class MapEmployerInformation - - def initialize(employer, word_doc_section) - @employer = employer - @card_setup = @employer.id_card_setup - @word_doc_section = word_doc_section - end - - def call - search_fields = mapping_hash.keys.to_set - - @word_doc_section.each do |line| - matching_field = search_fields.detect { |field| line.include?(field) } - if matching_field - field_mapping = mapping_hash[matching_field] - field_regex = field_mapping[:doc_to_employer_regex] - field_value = line.match(field_regex)[1].strip - employer_field = field_mapping[:employer_field] - - if field_mapping[:validation].present? - validation_type = field_mapping[:validation] - if send("is_#{validation_type}?".to_sym, field_value) - @employer[employer_field] = field_value - end - else - @employer[employer_field] = field_value - end - end - end - @card_setup.print_name = @employer.name - @employer.name = @employer.name.titleize - @card_setup.rx_group_number = @employer.group_number - @employer - end - - private - - def mapping_hash - { - 'Employer Name' => { - employer_field: :name, - doc_field: 'Employer Name', - doc_field_desc: 'Follows pattern - Employer Name:New Employer', - doc_to_employer_regex: /.*:(.*)/, - regex_desc: 'Grabs everything after colon' - }, - 'Group Number' => { - employer_field: :group_number, - doc_field: 'Group Number', - doc_field_desc: 'Follows pattern - Group Number:099999', - doc_to_employer_regex: /.*:(.*)/, - regex_desc: 'Grabs everything after colon', - validation: 'number' - }, - 'Group Effective Date' => { - employer_field: :effective_date, - doc_field: 'Group Effective Date', - doc_field_desc: 'Follows pattern - Group Effective Date:12/1/2025', - doc_to_employer_regex: /.*:(.*)/, - regex_desc: 'Grabs everything after colon', - validation: 'date' - } - } - end - - def is_number?(string) - true if Float(string) rescue false - end - - def is_date?(string) - true if Date.parse rescue false - end - - end -end \ No newline at end of file diff --git a/app/services/benefits_word_doc_service/map_employer_logo.rb b/app/services/benefits_word_doc_service/map_employer_logo.rb deleted file mode 100644 index 377fa32..0000000 --- a/app/services/benefits_word_doc_service/map_employer_logo.rb +++ /dev/null @@ -1,78 +0,0 @@ -module BenefitsWordDocService - class MapEmployerLogo - - def initialize(employer, word_doc) - @employer = employer - @card_setup = @employer.id_card_setup - @word_doc = word_doc - end - - def call - Zip::File.open(@word_doc) do |zip_file| - media_files = zip_file.select { |entry| entry.name.start_with?('word/media/') && !entry.directory? } - - if media_files.length > 1 - logo = media_files.last - file_extension = File.extname(logo.name) - meme_type = Marcel::MimeType.for(logo.get_input_stream) - image_binary = logo.get_input_stream.read - # image_binary = File.binread(logo.get_input_stream.read) - - filename = @employer.name_to_logo_filename(file_extension) - - logo = IdCard::EmployerLogo.find_or_create_by(filename: filename) do |clf| - clf.image_data = image_binary - clf.content_type = meme_type - end - - # new_logo = CardLogoFile.create!( - # filename: filename, - # image_data: image_binary, - # content_type: meme_type, - # logo_type: "employer" - # ) - - # image_io = StringIO.new(image_binary) - # width, height = FastImage.size(image_io) - # image_ratio = width.to_f / height - # if (0.8..1.2).cover?(image_ratio) - # @employer.single_card_template = "FairosRxIDCard-Half" - # else - # @employer.single_card_template = "FairosRxIDCard" - # end - - @card_setup.employer_logo = logo - end - end - @employer - end - - # def call - # extracted_images = [] - # Zip::File.open(@word_doc) do |zip_file| - # zip_file.each do |entry| - # if entry.name.start_with?('word/media/') && !entry.directory? - # file_extension = File.extname(entry.name) - # image_data = entry.get_input_stream.read - # extracted_images << { file_extension: file_extension, data: image_data } - # end - # end - # end - # if extracted_images.length > 1 - # logo = extracted_images.last - # filename = @employer.employer_name_to_logo_filename(logo[:file_extension]) - # employer_logo_binary = logo[:data] - - # new_logo = @employer.card_logo_files.create( - # filename: filename, - # image: employer_logo_binary, - # logo_type: "employer" - # ) - - # @employer.employer_logo = new_logo.filename - # # same file logic - # end - # @employer.save - # end - end -end diff --git a/app/services/benefits_word_doc_service/map_network_information.rb b/app/services/benefits_word_doc_service/map_network_information.rb deleted file mode 100644 index 08d5d46..0000000 --- a/app/services/benefits_word_doc_service/map_network_information.rb +++ /dev/null @@ -1,44 +0,0 @@ -module BenefitsWordDocService - class MapNetworkInformation - - def initialize(employer, word_doc_section) - @employer = employer - @card_setup = @employer.id_card_setup - @word_doc_section = word_doc_section - end - - def call - # network = @word_doc_section.each do |line| - # if line.match?(/cigna/i) - # return "Cigna" - # elsif line.match?(/medcost/i) - # return "Medcost" - # end - # end - - network = @word_doc_section.find do |line| - if line.match?(/cigna/i) - break "Cigna" - elsif line.match?(/medcost/i) - break "MedCost" - end - end - - # yellow_fruit_names_filtered = @word_doc_section.filter_map do |line| - # item[:name] if item[:color] == 'yellow' - # end - - if network - @card_setup.network_provider = network - logo_name = "#{network}Logo.png" - @card_setup.network_logo = IdCard::NetworkLogo.find_by(filename: logo_name) - @card_setup.provider_section = IdCard::ProviderSection.find_by(title: network) - @card_setup.rx_section = IdCard::RxSection.find_by(title: "FairosRx") - end - - - @employer - end - - end -end \ No newline at end of file diff --git a/app/services/benefits_word_doc_service/map_plans_information.rb b/app/services/benefits_word_doc_service/map_plans_information.rb deleted file mode 100644 index 910c40c..0000000 --- a/app/services/benefits_word_doc_service/map_plans_information.rb +++ /dev/null @@ -1,278 +0,0 @@ -module BenefitsWordDocService - class MapPlansInformation - - def initialize(employer, word_doc_section) - @employer = employer - @card_setup = @employer.id_card_setup - @word_doc_section = word_doc_section - end - - def call - search_fields = mapping_hash.keys.to_set - plans_indexes = @word_doc_section.each_index.select { |index| @word_doc_section[index].match?(/\d*\.?\d+k/i) } - - plans_indexes.each do |plan_index| - new_plan = @card_setup.plans.build(title: @word_doc_section[plan_index]) - plan_lines = @word_doc_section.slice(plan_index + 1, 14) - plan_lines.each_with_index do |line, i| - field_mapping = mapping_array[i] - if line.match(/(?<=:).+/) - field_value = line.match(/(?<=:).+/)[0].strip - else - field_regex = field_mapping[:doc_to_employer_regex] - if line.match(field_regex) - field_value = line.match(field_regex)[0].strip - elsif line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field])) - field_value = line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))[0].strip - else - field_value = line - end - end - employer_benefit_desc_field = field_mapping[:employer_benefit_desc_field] - new_benefit = new_plan.plan_benefits[i] - new_benefit.benefit = field_value - - - # matching_field = search_fields.detect { |field| line.include?(field) } - # if matching_field - # field_mapping = mapping_hash[matching_field] - # field_regex = field_mapping[:doc_to_employer_regex] - # if line.match(field_regex) - # field_value = line.match(field_regex)[0].strip - # elsif line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field])) - # field_value = line.match(default_benefit_regex(field_mapping[:employer_benefit_desc_field]))[0].strip - # else - # field_value = "" - # end - # employer_benefit_desc_field = field_mapping[:employer_benefit_desc_field] - # new_benefit = new_plan.plan_benefits.find_by(benefit_desc: employer_benefit_desc_field) - # new_benefit.benefit = field_value - # new_benefit.save - # end - end - end - @employer - end - - private - - def mapping_array - [ - { - employer_benefit_sequence: 1, - employer_benefit_desc_field: 'Primary Visit', - doc_field_desc: 'Follows pattern - Physician Visit$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 2, - employer_benefit_desc_field: 'Specialist Visit', - doc_field_desc: 'Follows pattern - Specialist Visit$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 3, - employer_benefit_desc_field: 'Urgent Care', - doc_field_desc: 'Follows pattern - Urgent Care$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 4, - employer_benefit_desc_field: 'INN–Ind Ded', - doc_field_desc: 'Follows pattern - Individual Deductible (in network )$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 5, - employer_benefit_desc_field: 'INN–Family Ded', - doc_field_desc: 'Follows pattern - Family Deductible(in network )$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 6, - employer_benefit_desc_field: 'OON–Ind Ded', - doc_field_desc: 'Follows pattern - Individual Deductible (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 7, - employer_benefit_desc_field: 'OON–Family Ded', - doc_field_desc: 'Follows pattern - Family Deductible (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 8, - employer_benefit_desc_field: 'Co-Insurance', - doc_field_desc: 'Follows pattern - Co-Insurance70%/30%', - doc_to_employer_regex: /(?<=Co-Insurance).*/, - regex_desc: 'Grabs everything after field name' - }, - { - employer_benefit_sequence: 9, - employer_benefit_desc_field: 'INN–Ind OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket(in network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 10, - employer_benefit_desc_field: 'INN–Family OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket Family(in network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 11, - employer_benefit_desc_field: 'OON–Ind OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket(out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 12, - employer_benefit_desc_field: 'OON–Family OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket Family (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - { - employer_benefit_sequence: 13, - employer_benefit_desc_field: 'Emergency Room', - doc_field_desc: 'Follows pattern - Emergency RoomXxxxx', - doc_to_employer_regex: /(?<=Emergency Room).*/, - regex_desc: 'Grabs everything after field name' - }, - { - employer_benefit_sequence: 14, - employer_benefit_desc_field: 'Preventive Care', - doc_field_desc: 'Follows pattern - Preventive Care100%', - doc_to_employer_regex: /(?<=Preventive Care).*/, - regex_desc: 'Grabs everything after field name' - } - ] - end - - def mapping_hash - { - 'Physician Visit' => { - employer_benefit_sequence: 1, - employer_benefit_desc_field: 'Primary Visit', - doc_field_desc: 'Follows pattern - Physician Visit$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Specialist Visit' => { - employer_benefit_sequence: 2, - employer_benefit_desc_field: 'Specialist Visit', - doc_field_desc: 'Follows pattern - Specialist Visit$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Urgent Care' => { - employer_benefit_sequence: 3, - employer_benefit_desc_field: 'Urgent Care', - doc_field_desc: 'Follows pattern - Urgent Care$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Individual Deductible' => { - employer_benefit_sequence: 4, - employer_benefit_desc_field: 'INN–Ind Ded', - doc_field_desc: 'Follows pattern - Individual Deductible (in network )$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Family Deductible' => { - employer_benefit_sequence: 5, - employer_benefit_desc_field: 'INN–Family Ded', - doc_field_desc: 'Follows pattern - Family Deductible(in network )$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Individual Deductible' => { - employer_benefit_sequence: 6, - employer_benefit_desc_field: 'OON–Ind Ded', - doc_field_desc: 'Follows pattern - Individual Deductible (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Family Deductible' => { - employer_benefit_sequence: 7, - employer_benefit_desc_field: 'OON–Family Ded', - doc_field_desc: 'Follows pattern - Family Deductible (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Co-Insurance' => { - employer_benefit_sequence: 8, - employer_benefit_desc_field: 'Co-Insurance', - doc_field_desc: 'Follows pattern - Co-Insurance70%/30%', - doc_to_employer_regex: /(?<=Co-Insurance).*/, - regex_desc: 'Grabs everything after field name' - }, - 'Out-of-Pocket' => { - employer_benefit_sequence: 9, - employer_benefit_desc_field: 'INN–Ind OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket(in network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Out-of-Pocket Family' => { - employer_benefit_sequence: 10, - employer_benefit_desc_field: 'INN–Family OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket Family(in network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Out-of-Pocket' => { - employer_benefit_sequence: 11, - employer_benefit_desc_field: 'OON–Ind OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket(out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Out-of-Pocket Family' => { - employer_benefit_sequence: 12, - employer_benefit_desc_field: 'OON–Family OOP', - doc_field_desc: 'Follows pattern - Out-of-Pocket Family (out of network)$x,xxx', - doc_to_employer_regex: /\$.*/, - regex_desc: 'Grabs dollar sign and everything after' - }, - 'Emergency Room' => { - employer_benefit_sequence: 13, - employer_benefit_desc_field: 'Emergency Room', - doc_field_desc: 'Follows pattern - Emergency RoomXxxxx', - doc_to_employer_regex: /(?<=Emergency Room).*/, - regex_desc: 'Grabs everything after field name' - }, - 'Preventive Care' => { - employer_benefit_sequence: 14, - employer_benefit_desc_field: 'Preventive Care', - doc_field_desc: 'Follows pattern - Preventive Care100%', - doc_to_employer_regex: /(?<=Preventive Care).*/, - regex_desc: 'Grabs everything after field name' - }, - } - end - - def default_benefit_regex(field) - /(?<=#{field}).*/ - end - - def is_number?(string) - true if Float(string) rescue false - end - - def is_date?(string) - true if Date.parse rescue false - end - - end -end \ No newline at end of file diff --git a/app/services/benefits_word_doc_service/word_doc_processor.rb b/app/services/benefits_word_doc_service/word_doc_processor.rb deleted file mode 100644 index e27f39f..0000000 --- a/app/services/benefits_word_doc_service/word_doc_processor.rb +++ /dev/null @@ -1,35 +0,0 @@ -module BenefitsWordDocService - class WordDocProcessor - - def initialize(word_doc, employer=nil) - @word_doc = word_doc - if employer - @employer = employer - else - @employer = Employer.new - @employer.build_id_card_setup - end - end - - def call - doc = Docx::Document.open(@word_doc) - data_lines = doc.paragraphs.map { |p| p.to_s.squish }.reject!(&:empty?) - - employer_information, plans_and_network = data_lines.split("Medical Plan") - plan_information, network_information = plans_and_network.split("Claims Submission") - - # employer_information = data_lines.slice(0, start_of_plans_index) - # plan_information = data_lines.slice(start_of_plans_index + 1..) - # network_information = data_lines.slice(start_of_network_index + 1..) - - @employer = BenefitsWordDocService::MapEmployerInformation.new(@employer, employer_information).call - @employer = BenefitsWordDocService::MapEmployerLogo.new(@employer, @word_doc).call - @employer = BenefitsWordDocService::MapPlansInformation.new(@employer, plan_information).call - @employer = BenefitsWordDocService::MapNetworkInformation.new(@employer, network_information).call - - @employer - - end - - end -end \ No newline at end of file diff --git a/app/services/beta_automation_simulation_service.rb b/app/services/beta_automation_simulation_service.rb new file mode 100644 index 0000000..bc30602 --- /dev/null +++ b/app/services/beta_automation_simulation_service.rb @@ -0,0 +1,8 @@ +class BetaAutomationSimulationService + def initialize() + end + + def call + Rails::Command.invoke('employer_automation:employer_initialize_test') + end +end \ No newline at end of file diff --git a/app/services/employer_cards/employer_data_formatter.rb b/app/services/employer_cards/employer_data_formatter.rb deleted file mode 100644 index fbd186b..0000000 --- a/app/services/employer_cards/employer_data_formatter.rb +++ /dev/null @@ -1,160 +0,0 @@ -module EmployerCards - class DataFormatter - - def initialize(employer) - @employer = employer - end - - def call - @members = @employer.members.order(:name) - @employer_cards = [] - - init_cards_and_set_member_fields - set_plan_fields - set_common_fields - - @employer_cards.each(&:save!) - - end - - private - - def init_cards_and_set_common_fields - employer_attributes = { - employer_name: @employer.id_card_display_name, - group_number: @employer.group_number, - rx_group: @employer.rx_group_number - } - - rx_attributes = @employer.card_rx.attributes.with_indifferent_access.slice( - :customer_service, - :web_url - ) - - provider_attributes = @employer.card_provider.attributes.with_indifferent_access.slice( - :provider_code, :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - ) - - selected_attributes = employer_attributes.merge(rx_attributes).merge(provider_attributes) - @employer_cards.each do |card| - card.assign_attributes(selected_attributes) - end - end - - def set_common_fields - employer_attributes = { - employer_name: @employer.id_card_display_name, - group_number: @employer.group_number, - rx_group: @employer.rx_group_number - } - - rx_attributes = @employer.card_rx.attributes.with_indifferent_access.slice( - :customer_service, - :web_url - ) - - provider_attributes = @employer.card_provider.attributes.with_indifferent_access.slice( - :provider_code, :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - ) - - selected_attributes = employer_attributes.merge(rx_attributes).merge(provider_attributes) - @employer_cards.each do |card| - card.assign_attributes(selected_attributes) - end - end - - def set_plan_fields - @employer.plans.each do |plan| - selected_attributes = {} - plan.plan_benefits.each do |bene| - selected_attributes["benefit_desc_#{bene.sequence}".to_sym] = bene.benefit_desc - selected_attributes["benefit_#{bene.sequence}".to_sym] = bene.benefit - end - @employer_cards.find_all { |card| card.plan_id == plan.id.to_s }.each do |card| - card.assign_attributes(selected_attributes) - end - end - end - - def init_cards_and_set_member_fields - @group_dependents = Vhcs::VwmbMember.where(pl_plan_key: @employer.pl_plan_key) - @members.each do |me| - effect_date = determine_eff_date(me) - if effect_date - member_card = SampleIdCard.new() - member_attributes = { - full_name: me.id_card_display_name, - name: me.name, - primary_mb_member_key: me.pb_entity_key, - family_id: me.family_id, - plan_id: me.plan_id, - medical_eff_date: effect_date.strftime("%m/%d/%Y") - } - - dependent_attributes = get_dependent_fields(me) - - selected_attributes = member_attributes.merge(dependent_attributes) - member_card.assign_attributes(selected_attributes) - @employer_cards.push(member_card) - - if dependent_attributes.present? - @employer_cards.push(member_card) - end - end - end - end - - # def set_network_fields - # selected_attributes = @employer.card_provider.attributes.with_indifferent_access.slice( - # :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - # :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - # :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - # :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - # def set_rx_fields - # # fairos_information = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - # selected_attributes = @employer.card_rx.attributes.with_indifferent_access.slice( - # :customer_service, - # :web_url - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - def determine_eff_date(member) - - participation = Vhcs::PbProductParticipation.joins('INNER JOIN "PBCoveredEntities" ON "PBProductParticipation"."PBProductParticipationKey" = "PBCoveredEntities"."PBProductParticipationKey"').where('"PBCoveredEntities"."PBEntityKey" = ?', member.pb_entity_key).last - in_effect = participation.in_effect - out_of_effect = participation.out_of_effect - - if in_effect <= (Date.today + 90.days) && (out_of_effect - 1.day) > Date.today && out_of_effect > in_effect - in_effect - else - false - end - - end - - def get_dependent_fields(member) - dependent_attributes = {} - dependents = @group_dependents.where(family_id: member.family_id).where.not(pb_entity_key: member.pb_entity_key) - dependents.each do |dep| - dependent_name = dep.first_name + ' ' + dep.last_name - dependent_attributes["dependent_#{dep.sequence_number - 1}".to_sym] = dependent_name - end - dependent_attributes - end - end -end \ No newline at end of file diff --git a/app/services/employer_cards/jasper_url_generator.rb b/app/services/employer_cards/jasper_url_generator.rb deleted file mode 100644 index d8e2169..0000000 --- a/app/services/employer_cards/jasper_url_generator.rb +++ /dev/null @@ -1,41 +0,0 @@ -module EmployerCards - class JasperUrlGenerator - - def initialize(pl_plan_key, family_id, layout) - @pl_plan_key = pl_plan_key - @family_id = family_id - @layout = layout - @card_setup = IdCard::Setup.find_by(pl_plan_key: pl_plan_key) - end - - def call - URI::HTTP.build(url_components) - end - - private - - def determine_network_logo - # if @network_logos.length > 1 - # member_geographic_info = Vhcs::PbEntityAddress.joins("INNER JOIN vwMBMember ON PBEntityAddress.PBEntityKey = vwMBMember.PBEntityKey AND PBEntityAddress.AddressTypeID = 1137").where("vwMBMember.FamilyID = ?", @family_id).first - # @network_logos.where.not(default: true).each do |pnl| - # if member_geographic_info[pnl.exception_type] == pnl.exception_value - # return pnl.net_logo - # end - # end - # end - # @network_logos.find_by(default: true).net_logo - @employer.default_network_logo - end -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF - def url_components - { - host: '10.41.1.115', - port: 8080, - path: '/trunk/IdCardsServlet', - query: "reportConn=BrittonConnect&cardTemplate=#{@employer.single_card_template}&printType=#{@layout}&family_id=#{@family_id }&employer_logo=#{@employer.employer_logo_filename}&network_logo=#{determine_network_logo}&FileType=PDF" - } - end - - end -end \ No newline at end of file diff --git a/app/services/employer_cards_generator.rb b/app/services/employer_cards_generator.rb deleted file mode 100644 index 2b7d5a0..0000000 --- a/app/services/employer_cards_generator.rb +++ /dev/null @@ -1,53 +0,0 @@ -class EmployerCardsGenerator - - def initialize(employer, layout) - @employer = employer - @layout = layout - end - - def call - SampleIdCard.where(employer_name: @employer.id_card_display_name).destroy_all - EmployerCards::DataFormatter.new(@employer).call - - if @layout == "FullPageCard" - group_cards_pdf_array = [] - reprint = Vhcs::HlidCardEggData.where(group_number: @employer.group_number).pluck(:family_id) - SampleIdCard.where(employer_name: @employer.id_card_display_name).each do |card| - if reprint.include?(card.family_id) - url = EmployerCards::JasperUrlGenerator.new(@employer, card.family_id, @layout).call - puts url - card_pdf = SampleCard::JasperPdfGenerator.new(url).call - card_filename = "#{card.name.gsub(", ","_")}_digital_card_#{Date.today}.pdf" - # group_cards_pdf_array.add(card_filename, pdf_object.to_pdf) - group_cards_pdf_array << { name: card_filename, data: card_pdf.to_pdf } - end - end - - # Initialize a string-based IO object - group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - group_cards_pdf_array.each do |file| - zio.put_next_entry(file[:name]) - zio.write(file[:data]) - end - end - else - group_cards_pdf = CombinePDF.new - reprint = Vhcs::HlidCardEggData.where(group_number: @employer.group_number).pluck(:family_id) - SampleIdCard.where(employer_name: @employer.id_card_display_name).each do |card| - if reprint.include?(card.family_id) - url = EmployerCards::JasperUrlGenerator.new(@employer, card.family_id, @layout).call - puts url - card_pdf = SampleCard::JasperPdfGenerator.new(url).call - - group_cards_pdf << card_pdf - end - end - end - - # todays_date = DateTime.current.strftime('%Y%m%d%H%M%S') - # group_cards_pdf.save("tmp/#{@employer.name}_print_cards_#{todays_date}.pdf") - - group_cards_pdf - end - -end diff --git a/app/services/id_card_printer_service/card_data_formatter.rb b/app/services/id_card_printer_service/card_data_formatter.rb index ce48803..29053a1 100644 --- a/app/services/id_card_printer_service/card_data_formatter.rb +++ b/app/services/id_card_printer_service/card_data_formatter.rb @@ -2,16 +2,10 @@ module IdCardPrinterService class CardDataFormatter def initialize(employers_member_keys) - # @employer = employer @employers_member_keys = Array.wrap(employers_member_keys) - - # @employer = Employer.includes(id_card_setup: [:provider_section, :rx_section]).find_by(pl_plan_key: pl_plan_key) - # @card_setup = @employer.id_card_setup end def call - # blank_card = IdCard::PrintData.new() - # @employer_cards = [] print_card_futures = [] @employers_member_keys.each do |emk| pl_plan_key = emk[:pl_plan_key] @@ -37,6 +31,7 @@ module IdCardPrinterService def initialize_employer_base_card employer_attributes = { + employer_id: @employer.id, pl_plan_key: @employer.pl_plan_key, group_number: @employer.group_number, rx_group: @card_setup.rx_group_number, @@ -62,7 +57,6 @@ module IdCardPrinterService ) selected_attributes = employer_attributes.merge(rx_attributes).merge(provider_attributes) - # blank_card.assign_attributes(selected_attributes) IdCard::PrintData.new(selected_attributes) end @@ -98,88 +92,7 @@ module IdCardPrinterService end mmember_card_futures - - # batch_process = BatchProcess.create!(total_jobs: @member_keys.count) - # @member_keys.each do |member_key| - # ProcessIdCardDataJob.perform_later(member_key, @card_setup.has_divisions, batch_process.id) - # end - - # @batch_id = batch_process.id - # @members.each do |me| - # effect_date = determine_eff_date(me) - # if effect_date - # member_card = @base_card.dup - # member_attributes = { - # full_name: me.id_card_display_name, - # full_name_last_name_first: me.name, - # primary_mb_member_key: me.pb_entity_key, - # family_id: me.family_id, - # plan_id: me.id_card_plan_id, - # medical_eff_date: effect_date.strftime("%m/%d/%Y") - # } - - # if @card_setup.has_divisions - # member_attributes.merge!({employer_name: me.division}) - # end - - # dependent_attributes = get_dependent_fields(me) - # if dependent_attributes.present? - # selected_attributes = member_attributes.merge(dependent_attributes) - # else - # selected_attributes = member_attributes - # end - - # member_card.assign_attributes(selected_attributes) - # @employer_cards.push(member_card) - # end - # end end - # def set_network_fields - # selected_attributes = @employer.card_provider.attributes.with_indifferent_access.slice( - # :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - # :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - # :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - # :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - # def set_rx_fields - # # fairos_information = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - # selected_attributes = @employer.card_rx.attributes.with_indifferent_access.slice( - # :customer_service, - # :web_url - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - def determine_eff_date(member) - - participation = Vhcs::PbProductParticipation.joins('INNER JOIN "PBCoveredEntities" ON "PBProductParticipation"."PBProductParticipationKey" = "PBCoveredEntities"."PBProductParticipationKey"').where('"PBCoveredEntities"."PBEntityKey" = ?', member.pb_entity_key).last - in_effect = participation.in_effect - out_of_effect = participation.out_of_effect - - if in_effect <= (Date.today + 90.days) && (out_of_effect - 1.day) > Date.today && out_of_effect > in_effect - in_effect - else - false - end - - end - - def get_dependent_fields(member) - dependent_attributes = {} - dependents = @group_dependents.where(family_id: member.family_id).where.not(pb_entity_key: member.pb_entity_key) - dependents.each do |dep| - dependent_name = dep.first_name + ' ' + dep.last_name - dependent_attributes["dependent_#{dep.sequence_number - 1}".to_sym] = dependent_name - end - dependent_attributes - end end end \ No newline at end of file diff --git a/app/services/id_card_printer_service/cards_generator.rb b/app/services/id_card_printer_service/cards_generator.rb index 34bca88..fc5f7e5 100644 --- a/app/services/id_card_printer_service/cards_generator.rb +++ b/app/services/id_card_printer_service/cards_generator.rb @@ -18,41 +18,14 @@ module IdCardPrinterService template_groups = break_up_by_template(pl_plan_keys) template_groups.each do |card_template, template_pl_plan_keys| batch = IdCard::PrintData.where(pl_plan_key: template_pl_plan_keys) - # all_template_cards.in_batches(of: 75).each_with_index do |batch, index| - jasper_batch_id = "#{template_pl_plan_keys.join('_')}-#{Time.current.utc.to_i}" - # binding.pry - batch.update!(jasper_batch_id: jasper_batch_id) - if @layout == "PrintCard" - add_dependent_cards(batch) - end - batch_pdf = IdCardPrinterService::PdfBatchProcessor.new(card_template, jasper_batch_id, @layout).call - pdf_array << batch_pdf - # end - # jasper_batches = break_into_jasper_batches(group_pl_plan_keys) - # jasper_batches.each_with_index do |batch, index| - # jasper_batch_id = "#{group_pl_plan_keys.join('_')}-#{index + 1}-#{Time.current.utc.to_i}" - # binding.pry - # batch.update!(jasper_batch_id: jasper_batch_id) - # if @layout == "PrintCard" - # add_dependent_cards(batch) - # end - # batch_pdf = IdCardPrinterService::PdfBatchProcessor.new(card_template, jasper_batch_id, @layout).call - # pdf_array << batch_pdf - # end + jasper_batch_id = "#{template_pl_plan_keys.join('_')}-#{Time.current.utc.to_i}" + batch.update!(jasper_batch_id: jasper_batch_id) + if @layout == "PrintCard" + add_dependent_cards(batch) + end + batch_pdf = IdCardPrinterService::PdfBatchProcessor.new(card_template, jasper_batch_id, @layout).call + pdf_array << batch_pdf end - # @employers_member_keys.each do |emk| - # employer_jasper_batches = IdCard::PrintData.where(pl_plan_key: emk[:pl_plan_key]).pluck(:network_logo_id).uniq - # employer_jasper_batches.each do |batch_network_logo| - # jasper_batch_id = "#{emk[:pl_plan_key]}-#{Time.current.utc.to_i}" - # batch = IdCard::PrintData.where(pl_plan_key: emk[:pl_plan_key], network_logo_id: batch_network_logo) - # # batch = employer_card_data.where(network_logo_id: batch_network_logo) - # batch.update!(jasper_batch_id: jasper_batch_id) - # batch_pdf = IdCardPrinterService::PdfBatchProcessor.new(emk[:pl_plan_key], batch_network_logo, jasper_batch_id, @layout).call - # pdf_array << batch_pdf - # end - # end - - group_pdfs = combine_pdfs(pdf_array) group_pdfs @@ -67,13 +40,6 @@ module IdCardPrinterService .compact_blank end - def break_into_jasper_batches(pl_plan_keys) - all_cards = IdCard::PrintData.where(pl_plan_key: pl_plan_keys) - binding.pry - jasper_batches = all_cards.each_slice(75).to_a - jasper_batches - end - def add_dependent_cards(batch) batch.where.not(dependent_1: [nil, ""]).find_each do |member_card| dependent_card = member_card.dup diff --git a/app/services/id_card_printer_service/employer_cards_generator.rb b/app/services/id_card_printer_service/employer_cards_generator.rb deleted file mode 100644 index 1b817f3..0000000 --- a/app/services/id_card_printer_service/employer_cards_generator.rb +++ /dev/null @@ -1,61 +0,0 @@ -module IdCardPrinterService - class EmployerCardsGenerator - - def initialize(employer, layout, zip=false) - @employer = employer - @member_keys = @employer.members.pluck(:pb_entity_key) - @layout = layout - @zip = zip - end - - def call - IdCard::PrintData.where(pl_plan_key: @employer.pl_plan_key).destroy_all - IdCardPrinterService::EmployerDataFormatter.new(@employer.pl_plan_key, @member_keys).call - - - # card_futures.each(&:value) - - # max_retries = 60 - # retries = 0 - # finished = false - - # batch_process = BatchProcess.find(batch_id) - # until finished || retries > max_retries - # # Solid Queue stores finished jobs here if preserve_finished_jobs = true - # if batch_process.completed_jobs < batch_process.total_jobs - # sleep 0.5 - # retries += 1 - # else - # batch_process.destroy! - # finished = true - # end - # end - - IdCard::PrintData.where(pl_plan_key: @employer.pl_plan_key, primary_mb_member_key: nil).destroy_all - - - pdf_array = IdCardPrinterService::PdfProcessor.new(@employer, @layout, @zip).call - - group_pdfs = combine_pdfs(pdf_array) - group_pdfs - - end - - private - - def combine_pdfs(pdf_array) - if @zip - group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - pdf_array.each do |file| - zio.put_next_entry(file[:name]) - zio.write(file[:data]) - end - end - else - group_cards_pdf = CombinePDF.new - pdf_array.each { |pdf| group_cards_pdf << pdf } - end - group_cards_pdf - end - end -end diff --git a/app/services/id_card_printer_service/employer_data_formatter.rb b/app/services/id_card_printer_service/employer_data_formatter.rb deleted file mode 100644 index 7135397..0000000 --- a/app/services/id_card_printer_service/employer_data_formatter.rb +++ /dev/null @@ -1,167 +0,0 @@ -module IdCardPrinterService - class EmployerDataFormatter - - def initialize(pl_plan_key, member_keys) - # @employer = employer - @member_keys = member_keys - - @employer = Employer.includes(id_card_setup: [:provider_section, :rx_section]).find_by(pl_plan_key: pl_plan_key) - @card_setup = @employer.id_card_setup - - @batch_id - end - - def call - # blank_card = IdCard::PrintData.new() - # @employer_cards = [] - - base_card = initialize_employer_base_card() - create_plan_base_cards(base_card) - - card_futures = create_member_cards_async() - - card_futures - - end - - private - - def initialize_employer_base_card - - employer_attributes = { - pl_plan_key: @employer.pl_plan_key, - group_number: @employer.group_number, - rx_group: @card_setup.rx_group_number, - network_provider: @card_setup.network_provider - } - unless @card_setup.has_divisions - employer_attributes.merge!({employer_name: @card_setup.print_name}) - end - - rx_attributes = @card_setup.rx_section.attributes.with_indifferent_access.slice( - :customer_service, - :web_url - ) - - provider_attributes = @card_setup.provider_section.attributes.with_indifferent_access.slice( - :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - ) - - selected_attributes = employer_attributes.merge(rx_attributes).merge(provider_attributes) - # blank_card.assign_attributes(selected_attributes) - IdCard::PrintData.new(selected_attributes) - end - - def create_plan_base_cards(common_fields_card) - needed_plans_ids = @employer.members.where(pb_entity_key: @member_keys).distinct.pluck(:id_card_plan_id) - needed_plans = @card_setup.plans.where(id: needed_plans_ids) - needed_plans.each do |plan| - selected_attributes = { plan_id: plan.id } - plan.plan_benefits.each do |bene| - selected_attributes["benefit_desc_#{bene.sequence}".to_sym] = bene.benefit_desc - selected_attributes["benefit_#{bene.sequence}".to_sym] = bene.benefit - end - - plan_base_card = common_fields_card.dup - plan_base_card.assign_attributes(selected_attributes) - plan_base_card.save - end - end - - def create_member_cards_async - - mmember_card_futures = @member_keys.map do |member_key| - Concurrent::Future.execute do - ActiveRecord::Base.connection_pool.with_connection do - ProcessIdCardDataJob.perform_now(member_key, @card_setup.has_divisions) - end - end - end - mmember_card_futures - # batch_process = BatchProcess.create!(total_jobs: @member_keys.count) - # @member_keys.each do |member_key| - # ProcessIdCardDataJob.perform_later(member_key, @card_setup.has_divisions, batch_process.id) - # end - - # @batch_id = batch_process.id - # @members.each do |me| - # effect_date = determine_eff_date(me) - # if effect_date - # member_card = @base_card.dup - # member_attributes = { - # full_name: me.id_card_display_name, - # full_name_last_name_first: me.name, - # primary_mb_member_key: me.pb_entity_key, - # family_id: me.family_id, - # plan_id: me.id_card_plan_id, - # medical_eff_date: effect_date.strftime("%m/%d/%Y") - # } - - # if @card_setup.has_divisions - # member_attributes.merge!({employer_name: me.division}) - # end - - # dependent_attributes = get_dependent_fields(me) - # if dependent_attributes.present? - # selected_attributes = member_attributes.merge(dependent_attributes) - # else - # selected_attributes = member_attributes - # end - - # member_card.assign_attributes(selected_attributes) - # @employer_cards.push(member_card) - # end - # end - end - - # def set_network_fields - # selected_attributes = @employer.card_provider.attributes.with_indifferent_access.slice( - # :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - # :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - # :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - # :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - # def set_rx_fields - # # fairos_information = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - # selected_attributes = @employer.card_rx.attributes.with_indifferent_access.slice( - # :customer_service, - # :web_url - # ) - # @employer_cards.all do |card| - # card.assign_attributes(selected_attributes) - # end - # end - - def determine_eff_date(member) - - participation = Vhcs::PbProductParticipation.joins('INNER JOIN "PBCoveredEntities" ON "PBProductParticipation"."PBProductParticipationKey" = "PBCoveredEntities"."PBProductParticipationKey"').where('"PBCoveredEntities"."PBEntityKey" = ?', member.pb_entity_key).last - in_effect = participation.in_effect - out_of_effect = participation.out_of_effect - - if in_effect <= (Date.today + 90.days) && (out_of_effect - 1.day) > Date.today && out_of_effect > in_effect - in_effect - else - false - end - - end - - def get_dependent_fields(member) - dependent_attributes = {} - dependents = @group_dependents.where(family_id: member.family_id).where.not(pb_entity_key: member.pb_entity_key) - dependents.each do |dep| - dependent_name = dep.first_name + ' ' + dep.last_name - dependent_attributes["dependent_#{dep.sequence_number - 1}".to_sym] = dependent_name - end - dependent_attributes - end - end -end \ No newline at end of file diff --git a/app/services/id_card_printer_service/jasper_batch_url_generator.rb b/app/services/id_card_printer_service/jasper_batch_url_generator.rb index 4c0f3d4..29bae5a 100644 --- a/app/services/id_card_printer_service/jasper_batch_url_generator.rb +++ b/app/services/id_card_printer_service/jasper_batch_url_generator.rb @@ -28,13 +28,15 @@ module IdCardPrinterService # http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF # http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF def url_components - { - host: '10.41.1.115', - port: 8080, - path: '/trunk/IdCardsServlet', + components = { + host: ENV["JASPER_SERVER_HOST"], + path: '/IdCardsServlet', query: "reportConn=BrittonConnect&cardTemplate=#{@card_template}&printType=#{@layout}&jasper_batch_id=#{@jasper_batch_id}&FileType=PDF" } + if ENV["JASPER_SERVER_PORT"].present? + components.merge!(port: ENV["JASPER_SERVER_PORT"]) + end + components end - end end \ No newline at end of file diff --git a/app/services/id_card_printer_service/jasper_pdf_generator.rb b/app/services/id_card_printer_service/jasper_pdf_generator.rb index 5160a3e..206bcde 100644 --- a/app/services/id_card_printer_service/jasper_pdf_generator.rb +++ b/app/services/id_card_printer_service/jasper_pdf_generator.rb @@ -9,7 +9,6 @@ module IdCardPrinterService def call response = HTTParty.get(@jasper_url) - # response.body CombinePDF.parse(response.body) end diff --git a/app/services/id_card_printer_service/jasper_url_generator.rb b/app/services/id_card_printer_service/jasper_url_generator.rb deleted file mode 100644 index 4dfe513..0000000 --- a/app/services/id_card_printer_service/jasper_url_generator.rb +++ /dev/null @@ -1,41 +0,0 @@ -module IdCardPrinterService - class JasperUrlGenerator - - def initialize(pl_plan_key, family_id, layout) - @pl_plan_key = pl_plan_key - @card_setup = IdCard::Setup.find_by(pl_plan_key: pl_plan_key) - @family_id = family_id - @layout = layout - end - - def call - URI::HTTP.build(url_components) - end - - private - - def determine_network_logo - # if @network_logos.length > 1 - # member_geographic_info = Vhcs::PbEntityAddress.joins("INNER JOIN vwMBMember ON PBEntityAddress.PBEntityKey = vwMBMember.PBEntityKey AND PBEntityAddress.AddressTypeID = 1137").where("vwMBMember.FamilyID = ?", @family_id).first - # @network_logos.where.not(default: true).each do |pnl| - # if member_geographic_info[pnl.exception_type] == pnl.exception_value - # return pnl.net_logo - # end - # end - # end - # @network_logos.find_by(default: true).net_logo - @card_setup.network_logo.filename - end -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF - def url_components - { - host: '10.41.1.115', - port: 8080, - path: '/trunk/IdCardsServlet', - query: "reportConn=BrittonConnect&cardTemplate=#{@card_setup.card_template}&printType=#{@layout}&family_id=#{@family_id }&employer_logo=#{@card_setup.employer_logo.filename}&network_logo=#{determine_network_logo}&FileType=PDF" - } - end - - end -end \ No newline at end of file diff --git a/app/services/id_card_printer_service/member_cards_generator.rb b/app/services/id_card_printer_service/member_cards_generator.rb deleted file mode 100644 index ccb4e47..0000000 --- a/app/services/id_card_printer_service/member_cards_generator.rb +++ /dev/null @@ -1,38 +0,0 @@ -module IdCardPrinterService - class MemberCardsGenerator - - def initialize(member_keys, layout) - @member_keys = Array.wrap(member_keys) - @employer = employer - @layout = layout - @zip = zip - end - - def call - IdCard::PrintData.where(mb_member_key: @employer.pl_plan_key).destroy_all - IdCardPrinterService::EmployerDataFormatter.new(@employer).call - - pdf_array = IdCardPrinterService::PdfProcessor.new(@employer, @layout, @zip).call - - group_pdfs = combine_pdfs(pdf_array) - group_pdfs - - end - - private - - def combine_pdfs(pdf_array) - if @zip - group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - pdf_array.each do |file| - zio.put_next_entry(file[:name]) - zio.write(file[:data]) - end - end - else - group_cards_pdf = CombinePDF.new - pdf_array.each { |pdf| group_cards_pdf << pdf } - end - end - end -end diff --git a/app/services/id_card_printer_service/pdf_batch_processor.rb b/app/services/id_card_printer_service/pdf_batch_processor.rb index 6b77b2e..e1d3ac0 100644 --- a/app/services/id_card_printer_service/pdf_batch_processor.rb +++ b/app/services/id_card_printer_service/pdf_batch_processor.rb @@ -8,28 +8,10 @@ module IdCardPrinterService end def call - # if @zip - # group_cards_pdf_array = [] - # else - # group_cards_pdf = CombinePDF.new - # end url = IdCardPrinterService::JasperBatchUrlGenerator.new(@card_template, @jasper_batch_id, @layout).call puts url batch_pdf = IdCardPrinterService::JasperPdfGenerator.new(url).call - - # if @zip - # group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - # group_cards_pdf_array.each do |file| - # zio.put_next_entry(file[:name]) - # zio.write(file[:data]) - # end - # end - # # else - # # todays_date = DateTime.current.strftime('%Y%m%d%H%M%S') - # # group_cards_pdf.save("tmp/#{@employer.name}_print_cards_#{todays_date}.pdf") - # end - batch_pdf end end diff --git a/app/services/id_card_printer_service/pdf_formatter.rb b/app/services/id_card_printer_service/pdf_formatter.rb deleted file mode 100644 index 1077440..0000000 --- a/app/services/id_card_printer_service/pdf_formatter.rb +++ /dev/null @@ -1,118 +0,0 @@ -module IdCardPrinterService - class PdfFormatter - - def initialize(pdf_array ,layout, zip=false) - @pdf_array = pdf_array - @layout = layout - @zip = zip - end - - def call - - if @layout == "FullPageCard" - pdf_file = @pdf_array.first - puts "-- CombinePdfPages --" - puts pdf_file.pages.count - pdf_file.pages.reverse.each do |page| - page_pdf = CombinePDF.new - page_pdf << page - page_data = page_pdf.to_pdf - full_name_last_name_first = get_watermark_field(page_data) - if full_name_last_name_first.present? - page_filename = "#{full_name_last_name_first.gsub(", ", "_")}_digital_card_#{Date.today}.pdf" - group_cards_pdf_array << { name: page_filename, data: page_data } - end - end - - group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - pdf_file = pdf_array.first - puts "-- CombinePdfPages --" - puts pdf_file.pages.count - pdf_file.pages.reverse.each do |page| - page_pdf = CombinePDF.new - page_pdf << page - page_data = page_pdf.to_pdf - full_name_last_name_first = get_watermark_field(page_data) - if full_name_last_name_first.present? - page_filename = "#{full_name_last_name_first.gsub(", ", "_")}_digital_card_#{Date.today}.pdf" - puts "-- Filename --" - puts page_filename - zio.put_next_entry(page_filename) - zio.write(page_data) - end - end - end - else - group_cards_pdf = CombinePDF.new - pdf_array.each { |pdf| group_cards_pdf << pdf } - end - group_cards_pdf - - - - end - - private - - def get_watermark_field(page_data) - watermark_field = "" - reader = PDF::Reader.new(StringIO.new(page_data)) - puts "-- ReaderPages --" - puts reader.pages.count - page = reader.pages.first - if watermark_match = page.text.match(/:WATERMARK:([^:]*):/) - watermark_field = page.text.match(/:WATERMARK:([^:]*):/)[1].strip - else - puts "blank page" - end - watermark_field - end - - def break_into_batches(pl_plan_keys) - batches_by_card_template = IdCard::Setup.where(pl_plan_key: pl_plan_keys).group_by(&:card_template) - .transform_values { |setups| setups.map(&:pl_plan_key) } - .compact_blank - end - - def combine_pdfs(pdf_array) - if @zip - group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - pdf_file = pdf_array.first - puts "-- CombinePdfPages --" - puts pdf_file.pages.count - pdf_file.pages.reverse.each do |page| - page_pdf = CombinePDF.new - page_pdf << page - page_data = page_pdf.to_pdf - full_name_last_name_first = get_watermark_field(page_data) - if full_name_last_name_first.present? - page_filename = "#{full_name_last_name_first.gsub(", ", "_")}_digital_card_#{Date.today}.pdf" - puts "-- Filename --" - puts page_filename - zio.put_next_entry(page_filename) - zio.write(page_data) - end - end - end - else - group_cards_pdf = CombinePDF.new - pdf_array.each { |pdf| group_cards_pdf << pdf } - end - group_cards_pdf - end - - def get_watermark_field(page_data) - watermark_field = "" - reader = PDF::Reader.new(StringIO.new(page_data)) - puts "-- ReaderPages --" - puts reader.pages.count - page = reader.pages.first - if watermark_match = page.text.match(/:WATERMARK:([^:]*):/) - watermark_field = page.text.match(/:WATERMARK:([^:]*):/)[1].strip - else - puts "blank page" - end - watermark_field - end - end -end diff --git a/app/services/id_card_printer_service/pdf_processor.rb b/app/services/id_card_printer_service/pdf_processor.rb deleted file mode 100644 index 524d4f2..0000000 --- a/app/services/id_card_printer_service/pdf_processor.rb +++ /dev/null @@ -1,44 +0,0 @@ -module IdCardPrinterService - class PdfProcessor - - def initialize(employer, layout, zip = false) - @employer = employer - @layout = layout - @zip = zip - end - - def call - # if @zip - # group_cards_pdf_array = [] - # else - # group_cards_pdf = CombinePDF.new - # end - group_cards_pdf_array = [] - IdCard::PrintData.where(pl_plan_key: @employer.pl_plan_key).each do |card| - url = IdCardPrinterService::JasperUrlGenerator.new(@employer.pl_plan_key, card.family_id, @layout).call - puts url - card_pdf = IdCardPrinterService::JasperPdfGenerator.new(url).call - if @zip - card_filename = "#{card.full_name_last_name_first.gsub(", ", "_")}_digital_card_#{Date.today}.pdf" - group_cards_pdf_array << { name: card_filename, data: card_pdf.to_pdf } - else - group_cards_pdf_array << card_pdf - end - end - - # if @zip - # group_cards_pdf = Zip::OutputStream.write_buffer do |zio| - # group_cards_pdf_array.each do |file| - # zio.put_next_entry(file[:name]) - # zio.write(file[:data]) - # end - # end - # # else - # # todays_date = DateTime.current.strftime('%Y%m%d%H%M%S') - # # group_cards_pdf.save("tmp/#{@employer.name}_print_cards_#{todays_date}.pdf") - # end - - group_cards_pdf_array - end - end -end \ No newline at end of file diff --git a/app/services/id_card_printer_service/queued_cards_generator.rb b/app/services/id_card_printer_service/queued_cards_generator.rb deleted file mode 100644 index d66e96b..0000000 --- a/app/services/id_card_printer_service/queued_cards_generator.rb +++ /dev/null @@ -1,62 +0,0 @@ -module IdCardPrinterService - class QueuedCardsGenerator - - def initialize(employer_member_keys) - @employer_member_keys = Array.wrap(employer_member_keys) - @layout = 'PrintCard' - @pl_plan_keys = @employer_member_keys.map { |emk| emk["PlanKey"].to_s } - end - - def call - white_card_array = [] - blue_card_array = [] - IdCard::PrintData.where(pl_plan_key: @pl_plan_keys).destroy_all - @employer_member_keys.each do |emk| - employer = Employer.find_by(pl_plan_key: emk["PlanKey"]) - card_setup = employer.id_card_setup - member_keys = emk["MemberKeys"].split(", ").map(&:to_i) - IdCardPrinterService::EmployerDataFormatter.new(employer, member_keys).call - if card_setup.card_color = "blue" - blue_card_array = IdCardPrinterService::PdfProcessor.new(employer, @layout).call - else - white_card_array = IdCardPrinterService::PdfProcessor.new(employer, @layout).call - end - end - - combine_pdfs(blue_card_array, white_card_array) - - end - - private - - def combine_pdfs(blue_cards, white_cards) - if blue_cards.present? && white_cards.present? - combined_pdfs = [] - blue_filename = "queued_blue_cards_#{Date.today}.pdf" - combined_pdfs << { name: blue_filename, data: blue_cards.to_pdf } - white_filename = "queued_white_cards_#{Date.today}.pdf" - combined_pdfs << { name: white_filename, data: white_cards.to_pdf } - - output_file = zip_cards(combined_pdfs) - elsif blue_cards.present? - output_file = CombinePDF.new - blue_cards.each { |pdf| output_file << pdf } - elsif white_cards.present? - output_file = CombinePDF.new - white_cards.each { |pdf| output_file << pdf } - end - - output_file - end - - def zip_cards(pdf_array) - Zip::OutputStream.write_buffer do |zio| - pdf_array.each do |file| - zio.put_next_entry(file[:name]) - zio.write(file[:data]) - end - end - end - - end -end diff --git a/app/services/id_card_printer_service/sample_cards_generator.rb b/app/services/id_card_printer_service/sample_cards_generator.rb index df6fb50..6d80322 100644 --- a/app/services/id_card_printer_service/sample_cards_generator.rb +++ b/app/services/id_card_printer_service/sample_cards_generator.rb @@ -1,15 +1,22 @@ module IdCardPrinterService class SampleCardsGenerator - def initialize(employer) - @employer = employer + def initialize(employer_id) + @employer_id = employer_id + @employer = Employer.includes(id_card_setup: [:provider_section, :rx_section]).find(@employer_id) + @card_setup = @employer.id_card_setup end def call - IdCard::PrintData.where(employer_name: @employer.id_card_setup.print_name).destroy_all + IdCard::PrintData.where(employer_id: @employer.id).destroy_all IdCardPrinterService::SampleDataFormatter.new(@employer).call - IdCardPrinterService::SamplePdfProcessor.new(@employer).call + batch = IdCard::PrintData.where(employer_id: @employer.id).where.not(plan_id: nil) + jasper_batch_id = "#{@employer.name.delete(" ")}Samples-#{Time.current.utc.to_i}" + batch.update!(jasper_batch_id: jasper_batch_id) + batch_pdf = IdCardPrinterService::PdfBatchProcessor.new(@card_setup.card_template, jasper_batch_id, "SampleCard").call + + batch_pdf end end end diff --git a/app/services/id_card_printer_service/sample_data_formatter.rb b/app/services/id_card_printer_service/sample_data_formatter.rb index fedf012..08792c8 100644 --- a/app/services/id_card_printer_service/sample_data_formatter.rb +++ b/app/services/id_card_printer_service/sample_data_formatter.rb @@ -7,79 +7,64 @@ module IdCardPrinterService end def call - @base_card = IdCard::PrintData.new(sample: true) - set_employer_fields() - set_sample_fields() - set_rx_fields() - set_network_fields() - set_dependent_fields() - sample_cards = set_plan_fields() - sample_cards.each(&:save!) + base_card = initialize_sample_base_card() + create_plan_base_cards(base_card) end private - def set_employer_fields - selected_attributes = { + def initialize_sample_base_card + sample_member_attributes = { + full_name: "JANE DOE", + primary_mb_member_key: "888888" + } + + employer_attributes = { employer_name: @card_setup.print_name, + employer_id: @employer.id, group_number: @employer.group_number.present? ? @employer.group_number : "999999", + rx_group: @employer.group_number.present? ? @employer.group_number : "999999", + network_provider: @card_setup.network_provider, + network_logo_filename: @card_setup.network_logo.filename, + employer_logo_filename: @card_setup.employer_logo.filename, medical_eff_date: @employer.effective_date } - @base_card.assign_attributes(selected_attributes) + rx_attributes = @card_setup.rx_section.attributes.with_indifferent_access.slice( + :customer_service, + :web_url + ) + + provider_attributes = @card_setup.provider_section.attributes.with_indifferent_access.slice( + :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, + :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, + :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, + :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12, + :precert_1, :precert_2, :precert_3, :precert_4 + ) + + selected_attributes = sample_member_attributes.merge(employer_attributes).merge(rx_attributes).merge(provider_attributes) + IdCard::PrintData.new(selected_attributes) end - def set_plan_fields - plans_base_cards = [] - @card_setup.plans.each do |plan| - @base_card.sample_key = @card_setup.print_name.titleize.split.map(&:first).push(plan.id).join - plan_base_card = @base_card.dup - plan_name = plan.title.split(/(?<=\d[kK])/).first + def create_plan_base_cards(common_fields_card) + plans = @card_setup.plans + plans.each do |plan| + selected_attributes = { + plan_id: plan.id, + sample_plan_title: plan.title + } plan.plan_benefits.each do |bene| - plan_base_card["benefit_desc_#{bene.sequence}".to_sym] = bene.benefit_desc - plan_base_card["benefit_#{bene.sequence}".to_sym] = bene.benefit + selected_attributes["benefit_desc_#{bene.sequence}".to_sym] = bene.benefit_desc + selected_attributes["benefit_#{bene.sequence}".to_sym] = bene.benefit end - plan_base_card.sample_plan_title = plan_name - plans_base_cards.push(plan_base_card) + + plan_base_card = common_fields_card.dup + plan_base_card.assign_attributes(selected_attributes) + plan_base_card.save end - plans_base_cards - end - - def set_sample_fields - selected_attributes = { - full_name: "JANE DOE", - primary_mb_member_key: "888888", - rx_group: @employer.group_number.present? ? @employer.group_number : "999999" - } - - @base_card.assign_attributes(selected_attributes) - end - - def set_network_fields - selected_attributes = @card_setup.provider_section.attributes.with_indifferent_access.slice( - :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - ) - # if @card_setup.network_provider == "Cigna" - # @base_card.provider_code = "5" - # end - @base_card.network_provider = @card_setup.network_provider - - @base_card.assign_attributes(selected_attributes) - end - - def set_rx_fields - # fairos_information = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - selected_attributes = @card_setup.rx_section.attributes.with_indifferent_access.slice( - :customer_service, - :web_url - ) - - @base_card.assign_attributes(selected_attributes) end def set_dependent_fields diff --git a/app/services/id_card_printer_service/sample_jasper_url_generator.rb b/app/services/id_card_printer_service/sample_jasper_url_generator.rb deleted file mode 100644 index 283af00..0000000 --- a/app/services/id_card_printer_service/sample_jasper_url_generator.rb +++ /dev/null @@ -1,42 +0,0 @@ -module IdCardPrinterService - class SampleJasperUrlGenerator - - def initialize(employer, sample_key, sample_title) - @sample_key = sample_key - @sample_title = sample_title - @card_setup = employer.id_card_setup - end - - def call - # @net_logo = determine_network_logo - - URI::HTTP.build(url_components) - end - - private - - def determine_network_logo - # if @network_logos.length > 1 - # member_geographic_info = Vhcs::PbEntityAddress.joins("INNER JOIN vwMBMember ON PBEntityAddress.PBEntityKey = vwMBMember.PBEntityKey AND PBEntityAddress.AddressTypeID = 1137").where("vwMBMember.FamilyID = ?", @family_id).first - # @network_logos.where.not(default: true).each do |pnl| - # if member_geographic_info[pnl.exception_type] == pnl.exception_value - # return pnl.net_logo - # end - # end - # end - # @network_logos.find_by(default: true).net_logo - @card_setup.network_logo.filename - end -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF -# http://localhost:8080/trunk/PdfServlet?reportConn=BrittonConnect&id=&reportName=FairosRxSampleIDCard-Half&family_id=Classic%202K&employer_logo=BryanPestControl.jpeg&network_logo=CignaLogo.png&reportDir=secure/Documents&SUBREPORT_DIR=/&ImageDir=secure/Documents&netToken=3a4a8b03f4dfb0e6e3fc82dd369f70ef&FileType=PDF - def url_components - { - host: '10.41.1.115', - port: 8080, - path: '/trunk/IdCardsServlet', - query: "reportConn=BrittonConnect&cardTemplate=#{@card_setup.card_template}&printType=SampleCard&sample_key=#{@sample_key}&sample_plan_title=#{@sample_title}&employer_logo=#{@card_setup.employer_logo.filename}&network_logo=#{determine_network_logo}&FileType=PDF" - } - end - - end -end \ No newline at end of file diff --git a/app/services/id_card_printer_service/sample_pdf_processor.rb b/app/services/id_card_printer_service/sample_pdf_processor.rb deleted file mode 100644 index dc544e4..0000000 --- a/app/services/id_card_printer_service/sample_pdf_processor.rb +++ /dev/null @@ -1,25 +0,0 @@ -module IdCardPrinterService - class SamplePdfProcessor - - def initialize(employer) - @employer = employer - @card_setup = @employer.id_card_setup - end - - def call - group_cards_pdf = CombinePDF.new - IdCard::PrintData.where(employer_name: @card_setup.print_name).each do |card| - url = IdCardPrinterService::SampleJasperUrlGenerator.new(@employer, card.sample_key, card.sample_plan_title).call - puts url - card_pdf = IdCardPrinterService::JasperPdfGenerator.new(url).call - - group_cards_pdf << card_pdf - end - - # todays_date = DateTime.current.strftime('%Y%m%d%H%M%S') - # group_cards_pdf.save("tmp/#{@employer.name}_print_cards_#{todays_date}.pdf") - - group_cards_pdf - end - end -end \ No newline at end of file diff --git a/app/services/id_card_queue_service/get_queued_counts.rb b/app/services/id_card_queue_service/get_queued_counts.rb deleted file mode 100644 index 7a40ff7..0000000 --- a/app/services/id_card_queue_service/get_queued_counts.rb +++ /dev/null @@ -1,26 +0,0 @@ -module IdCardQueueService - class GetQueuedCounts - - def initialize() - @employer_pl_plan_keys = IdCard::Setup.active.pluck(:pl_plan_key).join(',') - end - - def call - raw_employers_member_keys = CallStoredProc.new('HLGetQueuedIdCardMemberKeysTPA', { PLPlanKeys: @employer_pl_plan_keys }).call.to_ary - - end - - private - - def format_employers_member_keys(raw_employers_member_keys) - key_map = { "PlanKey" => :pl_plan_key, "MemberKeys" => :member_keys } - - raw_employers_member_keys.map do |hash| - hash["PlanKey"] = hash["PlanKey"].to_s - hash["MemberKeys"] = hash["MemberKeys"].split(", ").map(&:to_i) - hash.transform_keys(key_map) - end - end - - end -end \ No newline at end of file diff --git a/app/services/image_processor_service.rb b/app/services/image_processor_service.rb deleted file mode 100644 index 3506114..0000000 --- a/app/services/image_processor_service.rb +++ /dev/null @@ -1,33 +0,0 @@ -class ImageProcessorService - ALLOWED_LOGO_TYPES = ['Network', 'Employer'].freeze - - def initialize(image_path, logo_type, new_filename = nil) - @image_path = image_path - @logo_type = logo_type.capitalize - @new_filename = new_filename - - unless ALLOWED_LOGO_TYPES.include?(@logo_type) - raise ArgumentError, "Invalid logo type: #{@logo_type}. Must be one of: #{ALLOWED_LOGO_TYPES.join(', ')}" - end - end - - def call - - if @new_filename - filename = @new_filename - else - filename = File.basename(@image_path) - end - - binary_data = File.binread(@image_path) - # binary_data = File.open(@image_path, 'rb').read - meme_type = Marcel::MimeType.for Pathname.new(@image_path) - - logo_model = "IdCard::#{@logo_type}Logo".constantize - - logo_model.find_or_create_by(filename: filename) do |logo| - logo.image_data = binary_data - logo.content_type = meme_type - end - end -end \ No newline at end of file diff --git a/app/services/sample_card/data_formatter.rb b/app/services/sample_card/data_formatter.rb deleted file mode 100644 index 1e75adc..0000000 --- a/app/services/sample_card/data_formatter.rb +++ /dev/null @@ -1,93 +0,0 @@ -module SampleCard - class DataFormatter - - def initialize(employer) - @employer = employer - end - - def call - @sample_card = SampleIdCard.new() - - set_employer_fields() - set_generic_fields() - set_rx_fields() - set_network_fields() - # set_dependent_fields() - sample_cards = set_plan_fields() - sample_cards.each(&:save!) - - end - - private - - def set_employer_fields - selected_attributes = { - employer_name: @employer.name, - group_number: @employer.group_number.present? ? @employer.group_number : "999999", - medical_eff_date: @employer.effective_date - } - - @sample_card.assign_attributes(selected_attributes) - end - - def set_plan_fields - plans_sample_cards = [] - @employer.id_card_setup.plans.each do |plan| - plan_sample_card = @sample_card.dup - plan_name = plan.title.split(/(?<=\d[kK])/).first - plan_sample_card.family_id = plan_name - plan.plan_benefits.each do |bene| - plan_sample_card["benefit_desc_#{bene.sequence}".to_sym] = bene.benefit_desc - plan_sample_card["benefit_#{bene.sequence}".to_sym] = bene.benefit - end - plans_sample_cards.push(plan_sample_card) - end - plans_sample_cards - end - - def set_generic_fields - selected_attributes = { - full_name: "JANE DOE", - primary_mb_member_key: "888888", - rx_group: @employer.group_number.present? ? @employer.group_number : "999999" - } - - @sample_card.assign_attributes(selected_attributes) - end - - def set_network_fields - selected_attributes = @employer.id_card_setup.provider_section.attributes.with_indifferent_access.slice( - :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :provider_line_6, - :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :provider_line_12, - :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, - :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :claim_to_12 - ) - if @employer.network_provider == "Cigna" - @sample_card.provider_code = "5" - end - - @sample_card.assign_attributes(selected_attributes) - end - - def set_rx_fields - # fairos_information = Vhcs::HlrxCrosRef.where(pl_plan_key: 52).first - selected_attributes = @employer.id_card_setup.rx_section.attributes.with_indifferent_access.slice( - :customer_service, - :web_url - ) - - @sample_card.assign_attributes(selected_attributes) - end - - def set_dependent_fields - @sample_card.dependent_1 = "John Doe" - @sample_card.dependent_2 = "Molly Doe" - @sample_card.dependent_3 = "Jonathan Doe" - @sample_card.dependent_4 = "Calvin Doe" - @sample_card.dependent_5 = "Richard Doe" - @sample_card.dependent_6 = "Jannet Doe" - @sample_card.dependent_7 = "Longername Doe" - @sample_card.dependent_8 = "Robbert Doe" - end - end -end \ No newline at end of file diff --git a/app/services/sample_card/jasper_pdf_generator.rb b/app/services/sample_card/jasper_pdf_generator.rb deleted file mode 100644 index edb0441..0000000 --- a/app/services/sample_card/jasper_pdf_generator.rb +++ /dev/null @@ -1,17 +0,0 @@ -module SampleCard - class JasperPdfGenerator - - def initialize(jasper_url) - @jasper_url = jasper_url - end - - - def call - - response = HTTParty.get(@jasper_url) - CombinePDF.parse(response.body) - - end - - end -end \ No newline at end of file diff --git a/app/services/sample_card/pdf_printer.rb b/app/services/sample_card/pdf_printer.rb deleted file mode 100644 index a8ee2c0..0000000 --- a/app/services/sample_card/pdf_printer.rb +++ /dev/null @@ -1,27 +0,0 @@ -module SampleCard - class PdfPrinter - - def initialize(process, sample_cards) - @process = process - @sample_cards = sample_cards - end - - def call - group_cards_pdf = CombinePDF.new - @sample_cards.each do |sample_card| - url = SampleCard::JasperUrlGenerator.new(@process, sample_card.family_id).call - puts url - sample_card_pdf = SampleCard::JasperPdfGenerator.new(url).call - - group_cards_pdf << sample_card_pdf - end - - employer_name = @process.employer_name.downcase.tr(" ", "_") - todays_date = Date.today.strftime("%m/%d/%Y") - group_cards_pdf.save("tmp/#{employer_name}_sample_cards_#{todays_date}.pdf") - - group_cards_pdf - end - - end -end \ No newline at end of file diff --git a/app/services/sample_card_generator.rb b/app/services/sample_card_generator.rb deleted file mode 100644 index b7cf2a8..0000000 --- a/app/services/sample_card_generator.rb +++ /dev/null @@ -1,23 +0,0 @@ -class SampleCardGenerator - - def initialize(employer) - @employer = employer - end - - def call - SampleIdCard.where(employer_name: @employer.name).destroy_all - SampleCard::DataFormatter.new(@employer).call - - group_sample_cards_pdf = CombinePDF.new - SampleIdCard.where(employer_name: @employer.name).each do |card| - url = SampleCard::JasperUrlGenerator.new(@employer, card.family_id).call - puts url - card_pdf = SampleCard::JasperPdfGenerator.new(url).call - - group_sample_cards_pdf << card_pdf - end - - group_sample_cards_pdf - end - -end diff --git a/app/services/sample_card_generator_local.rb b/app/services/sample_card_generator_local.rb deleted file mode 100644 index 43ab051..0000000 --- a/app/services/sample_card_generator_local.rb +++ /dev/null @@ -1,26 +0,0 @@ -class SampleCardGeneratorLocal - - def initialize(process) - @process = process - end - - def call - # SampleCard::DataFormatter.new(@process).call - - group_sample_cards_pdf = CombinePDF.new - SampleIdCard.where(employer_name: @process.employer_name).each do |card| - url = SampleCard::JasperUrlGenerator.new(@process, card.family_id).call - puts url - card_pdf = SampleCard::JasperPdfGenerator.new(url).call - - group_sample_cards_pdf << card_pdf - end - - - todays_date = DateTime.current.strftime('%Y%m%d%H%M%S') - group_sample_cards_pdf.save("tmp/#{@process.employer_name}_sample_cards_#{todays_date}.pdf") - - group_sample_cards_pdf - end - -end diff --git a/app/views/articles/_article.html.erb b/app/views/articles/_article.html.erb deleted file mode 100644 index d3dda2c..0000000 --- a/app/views/articles/_article.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
-

- Title: - <%= article.title %> -

- -

- Posted <%= time_tag article.created_at %> -

- -

- <%= pluralize article.comments.count, "comment" %> -

- -

- Content: - <%= article.content %> -

- -

- <%= link_to "Show this article", article %> -

-
diff --git a/app/views/articles/_article.json.jbuilder b/app/views/articles/_article.json.jbuilder deleted file mode 100644 index eaaa557..0000000 --- a/app/views/articles/_article.json.jbuilder +++ /dev/null @@ -1,2 +0,0 @@ -json.extract! article, :id, :title, :content, :created_at, :updated_at -json.url article_url(article, format: :json) diff --git a/app/views/articles/_comments.html.erb b/app/views/articles/_comments.html.erb deleted file mode 100644 index cd7329d..0000000 --- a/app/views/articles/_comments.html.erb +++ /dev/null @@ -1,7 +0,0 @@ -

Comments

- -
- <%= render article.comments %> -
- -<%= render "comments/new", article: article %> diff --git a/app/views/articles/_form.html.erb b/app/views/articles/_form.html.erb deleted file mode 100644 index a41168c..0000000 --- a/app/views/articles/_form.html.erb +++ /dev/null @@ -1,27 +0,0 @@ -<%= form_with(model: article) do |form| %> - <% if article.errors.any? %> -
-

<%= pluralize(article.errors.count, "error") %> prohibited this article from being saved:

- - -
- <% end %> - -
- <%= form.label :title %> - <%= form.text_field :title %> -
- -
- <%= form.label :content %> - <%= form.rich_text_area :content %> -
- -
- <%= form.submit %> -
-<% end %> diff --git a/app/views/articles/edit.html.erb b/app/views/articles/edit.html.erb deleted file mode 100644 index 4252d7a..0000000 --- a/app/views/articles/edit.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -

Editing article

- -<%= render "form", article: @article %> - -
- -
- <%= link_to "Show this article", @article %> | - <%= link_to "Back to articles", articles_path %> -
diff --git a/app/views/articles/index.html.erb b/app/views/articles/index.html.erb deleted file mode 100644 index f109472..0000000 --- a/app/views/articles/index.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -

<%= notice %>

- -

Article

- -
- <%= render @articles %> -
- -<%= link_to "New article", new_article_path %> diff --git a/app/views/articles/index.json.jbuilder b/app/views/articles/index.json.jbuilder deleted file mode 100644 index 09a21f3..0000000 --- a/app/views/articles/index.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.array! @articles, partial: "articles/article", as: :article diff --git a/app/views/articles/new.html.erb b/app/views/articles/new.html.erb deleted file mode 100644 index ff360e1..0000000 --- a/app/views/articles/new.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -

New article

- -<%= render "form", article: @article %> - -
- -
- <%= link_to "Back to articles", articles_path %> -
diff --git a/app/views/articles/show.html.erb b/app/views/articles/show.html.erb deleted file mode 100644 index 5c96404..0000000 --- a/app/views/articles/show.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -<%= turbo_stream_from @article %> - -

<%= notice %>

- -<%= render @article %> -<%= render "articles/comments", article: @article %> - -
- <%= link_to "Edit this article", edit_article_path(@article) %> | - <%= link_to "Back to articles", articles_path %> - - <%= button_to "Destroy this article", article_path(@article), method: :delete %> -
diff --git a/app/views/articles/show.json.jbuilder b/app/views/articles/show.json.jbuilder deleted file mode 100644 index dd1fbb4..0000000 --- a/app/views/articles/show.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.partial! "articles/article", article: @article diff --git a/app/views/card_providers/_card_provider.html.erb b/app/views/card_providers/_card_provider.html.erb deleted file mode 100644 index 803fe01..0000000 --- a/app/views/card_providers/_card_provider.html.erb +++ /dev/null @@ -1,166 +0,0 @@ -
-
- Provider code: - <%= card_provider.provider_code %> -
-
- Provider line 1: - <%= card_provider.provider_line_1 %> -
-
- Provider line 2: - <%= card_provider.provider_line_2 %> -
-
- Provider line 3: - <%= card_provider.provider_line_3 %> -
-
- Provider line 4: - <%= card_provider.provider_line_4 %> -
-
- Provider line 5: - <%= card_provider.provider_line_5 %> -
-
- Mail to: - <%= card_provider.mail_to %> -
-
- Mail to 2: - <%= card_provider.mail_to_2 %> -
-
- Contact line 1: - <%= card_provider.contact_line_1 %> -
-
- Contact line 2: - <%= card_provider.contact_line_2 %> -
-
- Contact line 3: - <%= card_provider.contact_line_3 %> -
-
- Group number: - <%= card_provider.group_number %> -
-
- Claim to 1: - <%= card_provider.claim_to_1 %> -
-
- Claim to 2: - <%= card_provider.claim_to_2 %> -
-
- Claim to 3: - <%= card_provider.claim_to_3 %> -
-
- Claim to 4: - <%= card_provider.claim_to_4 %> -
-
- Claim to 5: - <%= card_provider.claim_to_5 %> -
-
- Claim to 6: - <%= card_provider.claim_to_6 %> -
-
- Claim to 7: - <%= card_provider.claim_to_7 %> -
-
- Claim to 8: - <%= card_provider.claim_to_8 %> -
-
- Claim to 9: - <%= card_provider.claim_to_9 %> -
-
- Claim to 10: - <%= card_provider.claim_to_10 %> -
-
- Claim to 11: - <%= card_provider.claim_to_11 %> -
-
- Provider line 6: - <%= card_provider.provider_line_6 %> -
-
- Provider line 7: - <%= card_provider.provider_line_7 %> -
-
- Provider line 8: - <%= card_provider.provider_line_8 %> -
-
- Provider line 9: - <%= card_provider.provider_line_9 %> -
-
- Provider line 10: - <%= card_provider.provider_line_10 %> -
-
- Provider line 11: - <%= card_provider.provider_line_11 %> -
-
- Rx group: - <%= card_provider.rx_group_id %> -
-
- Rx contact: - <%= card_provider.rx_contact %> -
-
- Provider lookup 1: - <%= card_provider.provider_lookup_1 %> -
-
- Provider lookup 2: - <%= card_provider.provider_lookup_2 %> -
-
- Precert 1: - <%= card_provider.precert_1 %> -
-
- Precert 2: - <%= card_provider.precert_2 %> -
-
- Precert 3: - <%= card_provider.precert_3 %> -
-
- Precert 4: - <%= card_provider.precert_4 %> -
-
- Precert 5: - <%= card_provider.precert_5 %> -
-
- Precert 6: - <%= card_provider.precert_6 %> -
-
- Provider line 12: - <%= card_provider.provider_line_12 %> -
-
- Claim to 12: - <%= card_provider.claim_to_12 %> -
-
diff --git a/app/views/card_providers/_card_provider.json.jbuilder b/app/views/card_providers/_card_provider.json.jbuilder deleted file mode 100644 index 56ff947..0000000 --- a/app/views/card_providers/_card_provider.json.jbuilder +++ /dev/null @@ -1,2 +0,0 @@ -json.extract! card_provider, :id, :provider_code, :provider_line_1, :provider_line_2, :provider_line_3, :provider_line_4, :provider_line_5, :mail_to, :mail_to_2, :contact_line_1, :contact_line_2, :contact_line_3, :group_number, :claim_to_1, :claim_to_2, :claim_to_3, :claim_to_4, :claim_to_5, :claim_to_6, :claim_to_7, :claim_to_8, :claim_to_9, :claim_to_10, :claim_to_11, :provider_line_6, :provider_line_7, :provider_line_8, :provider_line_9, :provider_line_10, :provider_line_11, :rx_group_id, :rx_contact, :provider_lookup_1, :provider_lookup_2, :precert_1, :precert_2, :precert_3, :precert_4, :precert_5, :precert_6, :provider_line_12, :claim_to_12, :created_at, :updated_at -json.url card_provider_url(card_provider, format: :json) diff --git a/app/views/card_providers/_form.html.erb b/app/views/card_providers/_form.html.erb deleted file mode 100644 index 2bc0e70..0000000 --- a/app/views/card_providers/_form.html.erb +++ /dev/null @@ -1,222 +0,0 @@ -<%= form_with(model: card_provider, class: "contents") do |form| %> - <% if card_provider.errors.any? %> -
-

<%= pluralize(card_provider.errors.count, "error") %> prohibited this card_provider from being saved:

- - -
- <% end %> - -
- <%= form.label :provider_code %> - <%= form.text_field :provider_code, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_code].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_code].any?}] %> -
- -
- <%= form.label :provider_line_1 %> - <%= form.text_field :provider_line_1, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_1].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_1].any?}] %> -
- -
- <%= form.label :provider_line_2 %> - <%= form.text_field :provider_line_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_2].any?}] %> -
- -
- <%= form.label :provider_line_3 %> - <%= form.text_field :provider_line_3, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_3].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_3].any?}] %> -
- -
- <%= form.label :provider_line_4 %> - <%= form.text_field :provider_line_4, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_4].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_4].any?}] %> -
- -
- <%= form.label :provider_line_5 %> - <%= form.text_field :provider_line_5, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_5].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_5].any?}] %> -
- -
- <%= form.label :mail_to %> - <%= form.text_field :mail_to, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:mail_to].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:mail_to].any?}] %> -
- -
- <%= form.label :mail_to_2 %> - <%= form.text_field :mail_to_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:mail_to_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:mail_to_2].any?}] %> -
- -
- <%= form.label :contact_line_1 %> - <%= form.text_field :contact_line_1, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:contact_line_1].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:contact_line_1].any?}] %> -
- -
- <%= form.label :contact_line_2 %> - <%= form.text_field :contact_line_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:contact_line_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:contact_line_2].any?}] %> -
- -
- <%= form.label :contact_line_3 %> - <%= form.text_field :contact_line_3, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:contact_line_3].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:contact_line_3].any?}] %> -
- -
- <%= form.label :group_number %> - <%= form.text_field :group_number, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:group_number].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:group_number].any?}] %> -
- -
- <%= form.label :claim_to_1 %> - <%= form.text_field :claim_to_1, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_1].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_1].any?}] %> -
- -
- <%= form.label :claim_to_2 %> - <%= form.text_field :claim_to_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_2].any?}] %> -
- -
- <%= form.label :claim_to_3 %> - <%= form.text_field :claim_to_3, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_3].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_3].any?}] %> -
- -
- <%= form.label :claim_to_4 %> - <%= form.text_field :claim_to_4, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_4].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_4].any?}] %> -
- -
- <%= form.label :claim_to_5 %> - <%= form.text_field :claim_to_5, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_5].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_5].any?}] %> -
- -
- <%= form.label :claim_to_6 %> - <%= form.text_field :claim_to_6, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_6].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_6].any?}] %> -
- -
- <%= form.label :claim_to_7 %> - <%= form.text_field :claim_to_7, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_7].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_7].any?}] %> -
- -
- <%= form.label :claim_to_8 %> - <%= form.text_field :claim_to_8, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_8].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_8].any?}] %> -
- -
- <%= form.label :claim_to_9 %> - <%= form.text_field :claim_to_9, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_9].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_9].any?}] %> -
- -
- <%= form.label :claim_to_10 %> - <%= form.text_field :claim_to_10, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_10].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_10].any?}] %> -
- -
- <%= form.label :claim_to_11 %> - <%= form.text_field :claim_to_11, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_11].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_11].any?}] %> -
- -
- <%= form.label :provider_line_6 %> - <%= form.text_field :provider_line_6, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_6].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_6].any?}] %> -
- -
- <%= form.label :provider_line_7 %> - <%= form.text_field :provider_line_7, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_7].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_7].any?}] %> -
- -
- <%= form.label :provider_line_8 %> - <%= form.text_field :provider_line_8, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_8].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_8].any?}] %> -
- -
- <%= form.label :provider_line_9 %> - <%= form.text_field :provider_line_9, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_9].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_9].any?}] %> -
- -
- <%= form.label :provider_line_10 %> - <%= form.text_field :provider_line_10, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_10].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_10].any?}] %> -
- -
- <%= form.label :provider_line_11 %> - <%= form.text_field :provider_line_11, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_11].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_11].any?}] %> -
- -
- <%= form.label :rx_group_id %> - <%= form.text_field :rx_group_id, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:rx_group_id].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:rx_group_id].any?}] %> -
- -
- <%= form.label :rx_contact %> - <%= form.text_field :rx_contact, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:rx_contact].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:rx_contact].any?}] %> -
- -
- <%= form.label :provider_lookup_1 %> - <%= form.text_field :provider_lookup_1, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_lookup_1].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_lookup_1].any?}] %> -
- -
- <%= form.label :provider_lookup_2 %> - <%= form.text_field :provider_lookup_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_lookup_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_lookup_2].any?}] %> -
- -
- <%= form.label :precert_1 %> - <%= form.text_field :precert_1, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_1].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_1].any?}] %> -
- -
- <%= form.label :precert_2 %> - <%= form.text_field :precert_2, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_2].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_2].any?}] %> -
- -
- <%= form.label :precert_3 %> - <%= form.text_field :precert_3, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_3].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_3].any?}] %> -
- -
- <%= form.label :precert_4 %> - <%= form.text_field :precert_4, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_4].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_4].any?}] %> -
- -
- <%= form.label :precert_5 %> - <%= form.text_field :precert_5, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_5].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_5].any?}] %> -
- -
- <%= form.label :precert_6 %> - <%= form.text_field :precert_6, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:precert_6].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:precert_6].any?}] %> -
- -
- <%= form.label :provider_line_12 %> - <%= form.text_field :provider_line_12, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:provider_line_12].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:provider_line_12].any?}] %> -
- -
- <%= form.label :claim_to_12 %> - <%= form.text_field :claim_to_12, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_provider.errors[:claim_to_12].none?, "border-red-400 focus:outline-red-600": card_provider.errors[:claim_to_12].any?}] %> -
- -
- <%= form.submit class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white inline-block font-medium cursor-pointer" %> -
-<% end %> diff --git a/app/views/card_providers/edit.html.erb b/app/views/card_providers/edit.html.erb deleted file mode 100644 index 98bc866..0000000 --- a/app/views/card_providers/edit.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<% content_for :title, "Editing card provider" %> - -
-

Editing card provider

- - <%= render "form", card_provider: @card_provider %> - - <%= link_to "Show this card provider", @card_provider, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Back to card providers", card_providers_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> -
diff --git a/app/views/card_providers/index.html.erb b/app/views/card_providers/index.html.erb deleted file mode 100644 index f707e82..0000000 --- a/app/views/card_providers/index.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -<% content_for :title, "Card providers" %> - -
- <% if notice.present? %> -

<%= notice %>

- <% end %> - -
-

Card providers

- <%= link_to "New card provider", new_card_provider_path, class: "rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white block font-medium" %> -
- -
- <% if @card_providers.any? %> - <% @card_providers.each do |card_provider| %> -
- <%= render card_provider %> -
- <%= link_to "Show", card_provider, class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Edit", edit_card_provider_path(card_provider), class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= button_to "Destroy", card_provider, method: :delete, class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 text-white bg-red-600 hover:bg-red-500 font-medium cursor-pointer", data: { turbo_confirm: "Are you sure?" } %> -
-
- <% end %> - <% else %> -

No card providers found.

- <% end %> -
-
diff --git a/app/views/card_providers/index.json.jbuilder b/app/views/card_providers/index.json.jbuilder deleted file mode 100644 index 7f87ab3..0000000 --- a/app/views/card_providers/index.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.array! @card_providers, partial: "card_providers/card_provider", as: :card_provider diff --git a/app/views/card_providers/new.html.erb b/app/views/card_providers/new.html.erb deleted file mode 100644 index f8fa63a..0000000 --- a/app/views/card_providers/new.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<% content_for :title, "New card provider" %> - -
-

New card provider

- - <%= render "form", card_provider: @card_provider %> - - <%= link_to "Back to card providers", card_providers_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> -
diff --git a/app/views/card_providers/show.html.erb b/app/views/card_providers/show.html.erb deleted file mode 100644 index d30a151..0000000 --- a/app/views/card_providers/show.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<% content_for :title, "Showing card provider" %> - -
- <% if notice.present? %> -

<%= notice %>

- <% end %> - -

Showing card provider

- - <%= render @card_provider %> - - <%= link_to "Edit this card provider", edit_card_provider_path(@card_provider), class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Back to card providers", card_providers_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= button_to "Destroy this card provider", @card_provider, method: :delete, form_class: "sm:inline-block mt-2 sm:mt-0 sm:ml-2", class: "w-full rounded-md px-3.5 py-2.5 text-white bg-red-600 hover:bg-red-500 font-medium cursor-pointer", data: { turbo_confirm: "Are you sure?" } %> -
diff --git a/app/views/card_providers/show.json.jbuilder b/app/views/card_providers/show.json.jbuilder deleted file mode 100644 index 77700cb..0000000 --- a/app/views/card_providers/show.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.partial! "card_providers/card_provider", card_provider: @card_provider diff --git a/app/views/card_rxes/_card_rx.html.erb b/app/views/card_rxes/_card_rx.html.erb deleted file mode 100644 index a4095de..0000000 --- a/app/views/card_rxes/_card_rx.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -
-
- Help desk: - <%= card_rx.help_desk %> -
-
- Customer service: - <%= card_rx.customer_service %> -
-
- Web url: - <%= card_rx.web_url %> -
-
diff --git a/app/views/card_rxes/_card_rx.json.jbuilder b/app/views/card_rxes/_card_rx.json.jbuilder deleted file mode 100644 index 8c3ac9c..0000000 --- a/app/views/card_rxes/_card_rx.json.jbuilder +++ /dev/null @@ -1,2 +0,0 @@ -json.extract! card_rx, :id, :help_desk, :customer_service, :web_url, :created_at, :updated_at -json.url card_rx_url(card_rx, format: :json) diff --git a/app/views/card_rxes/_form.html.erb b/app/views/card_rxes/_form.html.erb deleted file mode 100644 index d9c414b..0000000 --- a/app/views/card_rxes/_form.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -<%= form_with(model: card_rx, class: "contents") do |form| %> - <% if card_rx.errors.any? %> -
-

<%= pluralize(card_rx.errors.count, "error") %> prohibited this card_rx from being saved:

- - -
- <% end %> - -
- <%= form.label :help_desk %> - <%= form.text_field :help_desk, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_rx.errors[:help_desk].none?, "border-red-400 focus:outline-red-600": card_rx.errors[:help_desk].any?}] %> -
- -
- <%= form.label :customer_service %> - <%= form.text_field :customer_service, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_rx.errors[:customer_service].none?, "border-red-400 focus:outline-red-600": card_rx.errors[:customer_service].any?}] %> -
- -
- <%= form.label :web_url %> - <%= form.text_field :web_url, class: ["block shadow-sm rounded-md border px-3 py-2 mt-2 w-full", {"border-gray-400 focus:outline-blue-600": card_rx.errors[:web_url].none?, "border-red-400 focus:outline-red-600": card_rx.errors[:web_url].any?}] %> -
- -
- <%= form.submit class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white inline-block font-medium cursor-pointer" %> -
-<% end %> diff --git a/app/views/card_rxes/edit.html.erb b/app/views/card_rxes/edit.html.erb deleted file mode 100644 index 5af332e..0000000 --- a/app/views/card_rxes/edit.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -<% content_for :title, "Editing card rx" %> - -
-

Editing card rx

- - <%= render "form", card_rx: @card_rx %> - - <%= link_to "Show this card rx", @card_rx, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Back to card rxes", card_rxes_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> -
diff --git a/app/views/card_rxes/index.html.erb b/app/views/card_rxes/index.html.erb deleted file mode 100644 index 02ec42e..0000000 --- a/app/views/card_rxes/index.html.erb +++ /dev/null @@ -1,29 +0,0 @@ -<% content_for :title, "Card rxes" %> - -
- <% if notice.present? %> -

<%= notice %>

- <% end %> - -
-

Card rxes

- <%= link_to "New card rx", new_card_rx_path, class: "rounded-md px-3.5 py-2.5 bg-blue-600 hover:bg-blue-500 text-white block font-medium" %> -
- -
- <% if @card_rxes.any? %> - <% @card_rxes.each do |card_rx| %> -
- <%= render card_rx %> -
- <%= link_to "Show", card_rx, class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Edit", edit_card_rx_path(card_rx), class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= button_to "Destroy", card_rx, method: :delete, class: "w-full sm:w-auto rounded-md px-3.5 py-2.5 text-white bg-red-600 hover:bg-red-500 font-medium cursor-pointer", data: { turbo_confirm: "Are you sure?" } %> -
-
- <% end %> - <% else %> -

No card rxes found.

- <% end %> -
-
diff --git a/app/views/card_rxes/index.json.jbuilder b/app/views/card_rxes/index.json.jbuilder deleted file mode 100644 index 25ff8ac..0000000 --- a/app/views/card_rxes/index.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.array! @card_rxes, partial: "card_rxes/card_rx", as: :card_rx diff --git a/app/views/card_rxes/new.html.erb b/app/views/card_rxes/new.html.erb deleted file mode 100644 index fe4fb52..0000000 --- a/app/views/card_rxes/new.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<% content_for :title, "New card rx" %> - -
-

New card rx

- - <%= render "form", card_rx: @card_rx %> - - <%= link_to "Back to card rxes", card_rxes_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> -
diff --git a/app/views/card_rxes/show.html.erb b/app/views/card_rxes/show.html.erb deleted file mode 100644 index d8fba66..0000000 --- a/app/views/card_rxes/show.html.erb +++ /dev/null @@ -1,15 +0,0 @@ -<% content_for :title, "Showing card rx" %> - -
- <% if notice.present? %> -

<%= notice %>

- <% end %> - -

Showing card rx

- - <%= render @card_rx %> - - <%= link_to "Edit this card rx", edit_card_rx_path(@card_rx), class: "w-full sm:w-auto text-center rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= link_to "Back to card rxes", card_rxes_path, class: "w-full sm:w-auto text-center mt-2 sm:mt-0 sm:ml-2 rounded-md px-3.5 py-2.5 bg-gray-100 hover:bg-gray-50 inline-block font-medium" %> - <%= button_to "Destroy this card rx", @card_rx, method: :delete, form_class: "sm:inline-block mt-2 sm:mt-0 sm:ml-2", class: "w-full rounded-md px-3.5 py-2.5 text-white bg-red-600 hover:bg-red-500 font-medium cursor-pointer", data: { turbo_confirm: "Are you sure?" } %> -
diff --git a/app/views/card_rxes/show.json.jbuilder b/app/views/card_rxes/show.json.jbuilder deleted file mode 100644 index a3c698e..0000000 --- a/app/views/card_rxes/show.json.jbuilder +++ /dev/null @@ -1 +0,0 @@ -json.partial! "card_rxes/card_rx", card_rx: @card_rx diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb deleted file mode 100644 index 216a9c2..0000000 --- a/app/views/comments/_comment.html.erb +++ /dev/null @@ -1,4 +0,0 @@ -
- <%= comment.content %> - - <%= time_tag comment.created_at %> -
diff --git a/app/views/comments/_new.html.erb b/app/views/comments/_new.html.erb deleted file mode 100644 index 3e42623..0000000 --- a/app/views/comments/_new.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<%= form_with model: [ article, Comment.new ] do |form| %> - Your comment:
- <%= form.text_area :content, size: "20x5" %> - <%= form.submit %> -<% end %> diff --git a/app/views/dashboard/index.html.erb b/app/views/dashboard/index.html.erb new file mode 100644 index 0000000..97e6d97 --- /dev/null +++ b/app/views/dashboard/index.html.erb @@ -0,0 +1,29 @@ +
+
+ Baclight +
+
+
+
+ <%= link_to employers_path, data: { turbo: false }, class: "flex justify-center items-center w-full h-34 cursor-pointer bg-atmosphere hover:bg-deepcove border-4 border-atmosphere text-platinum hover:text-copper text-xl font-bold px-3 rounded-md mt-3 transition duration-100" do %> + <%= icon "layout-dashboard", library: "lucide", class: "h-3/4 w-3/4 text-center rounded-md" %> + <% end %> +

+ <%= "Employer Control" %> +

+
+
+
+
+ <%= link_to id_card_print_index_path, data: { turbo: false }, class: "flex justify-center items-center w-full h-34 cursor-pointer bg-cobalt-vivid hover:bg-deepcove border-4 border-cobalt-vivid text-platinum hover:text-copper text-xl font-bold px-3 rounded-md mt-3 transition duration-100" do %> + <%= icon "printer", library: "lucide", class: "h-3/4 w-3/4 text-center rounded-md" %> + <% end %> +

+ <%= "ID Card Printer" %> +

+
+
+
+
diff --git a/app/views/devise/index.html.erb b/app/views/devise/index.html.erb new file mode 100644 index 0000000..d03b2af --- /dev/null +++ b/app/views/devise/index.html.erb @@ -0,0 +1,14 @@ +
+
+
+ Baclight +
+
+ Baclight +
+
+ Baclight +
+
+
+ diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb new file mode 100644 index 0000000..bc99afe --- /dev/null +++ b/app/views/devise/sessions/new.html.erb @@ -0,0 +1,47 @@ +
+
+
+
+
+ Baclight +
+
+

+ Britton Ancillary Center +

+
+ <%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { data: { turbo: false} }) do |f| %> +
+ +
+
+ <%= f.label :email, class: "sr-only", for: "email-address" %> + <%= f.email_field :email, id: "email-address", autofocus: true, autocomplete: "email", placeholder: "Email address", class: "appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-bluetang text-deepcove rounded-t-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" %> +
+
+ <%= f.label :password, for: "password", class: "sr-only" %> + <%= f.password_field :password, id: "password", autocomplete: "current-password", placeholder: "Password", class: "appearance-none rounded-none relative block w-full px-3 py-2 border border-gray-300 placeholder-bluetang text-deepcove rounded-b-md focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 focus:z-10 sm:text-sm" %> +
+
+ <% if devise_mapping.rememberable? %> +
+
+ <%= f.check_box :remember_me, class: "h-4 w-4 text-[#CD7F32] focus:ring-indigo-500 border-[#CD7F32] rounded" %> + <%= f.label :remember_me, class: "ml-2 block font-semibold text-md text-[#CD7F32]" %> +
+
+ <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> + <%= link_to "Forgot your password?", new_password_path(resource_name), class: "font-semibold text-atmosphere hover:text-bluemana" %> + <% end %> +
+
+ <% end %> +
+ <%= f.submit "Sign in", { class: "relative w-full flex justify-center py-2 px-4 border-4 font-bold rounded-lg text-platinum" } %> +
+
+ <% end %> +
+
\ No newline at end of file diff --git a/app/views/devise/shared/_error_messages.html.erb b/app/views/devise/shared/_error_messages.html.erb new file mode 100644 index 0000000..8c9c171 --- /dev/null +++ b/app/views/devise/shared/_error_messages.html.erb @@ -0,0 +1,15 @@ +<% if resource.errors.any? %> +
+

+ <%= I18n.t("errors.messages.not_saved", + count: resource.errors.count, + resource: resource.class.model_name.human.downcase) + %> +

+ +
+<% end %> diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb new file mode 100644 index 0000000..21cf422 --- /dev/null +++ b/app/views/devise/shared/_links.html.erb @@ -0,0 +1,25 @@ +<%- if controller_name != 'sessions' %> +

<%= link_to "Log in", new_session_path(resource_name) %>

+<% end %> + +<%- if devise_mapping.registerable? && controller_name != 'registrations' %> +

<%= link_to "Sign up", new_registration_path(resource_name) %>

+<% end %> + +<%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> +

<%= link_to "Forgot your password?", new_password_path(resource_name) %>

+<% end %> + +<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> +

<%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>

+<% end %> + +<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> +

<%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>

+<% end %> + +<%- if devise_mapping.omniauthable? %> + <%- resource_class.omniauth_providers.each do |provider| %> +

<%= button_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider), data: { turbo: false } %>

+ <% end %> +<% end %> diff --git a/app/views/employer_setup/_alt_network_logo_fields.html.erb b/app/views/employer_setup/_alt_network_logo_fields.html.erb deleted file mode 100644 index 4a1acbf..0000000 --- a/app/views/employer_setup/_alt_network_logo_fields.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -
-
-
-
- <%= f.select :network_logo, options_for_select(CardLogoFile.where(logo_type: 'network').pluck(:filename).map { |fn| [fn, fn]}), { include_blank: "Select or Add Network Logo", class: "rounded-r-none" }, { data: { logo_upload_target: "logoSelect" }} %> -
-
- -
- -
-
- <%= network_fields.file_field :network_logo_file, class: "hidden", id: "file_upload_input_NEW_RECORD", data: { add_alt_network_logo_target: "networkLogo", logo_upload_type_param: "network", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
- <%= network_fields.select :exception_type, options_for_select(["Zip","State"]), label: { text: "Exception Type" }, prompt: "Select Type", class: "w-full" %> -
-
- <%= network_fields.text_field :exception_values, label: { text: "Exception Values" }, class: "w-full" %> -
-
-
-
- <%= network_fields.hidden_field :_destroy %> - <%= button_tag "Remove", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-NEXT_SECONDARY_COLOR hover:text-platinum py-1 px-2 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-alt-network-logo#remove" } %> -
-
\ No newline at end of file diff --git a/app/views/employer_setup/_first_plan_fields.html.erb b/app/views/employer_setup/_first_plan_fields.html.erb deleted file mode 100644 index a276125..0000000 --- a/app/views/employer_setup/_first_plan_fields.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_desc_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
-
-
rounded-bl-lg">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{i + 1}" %> -
-
- <%= plan_fields.text_field :title, label: { text: "Plan Title" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-
- <%= plan_fields.text_field :plan_id, label: { text: "Plan Id" }, class: "w-full" %> -
-
- <%= f.select :template_id, options_from_collection_for_select(@form.plan_templates, :id, :title), { prompt: "Select Plan Template" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
\ No newline at end of file diff --git a/app/views/employer_setup/_plan_benefit_only_fields.erb b/app/views/employer_setup/_plan_benefit_only_fields.erb deleted file mode 100644 index fb17ad2..0000000 --- a/app/views/employer_setup/_plan_benefit_only_fields.erb +++ /dev/null @@ -1,4 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit, label: { text: "#{plan_benefits_fields.object.benefit_desc}" }, data: { benefits_template_picker_target: "benefit", sequence: plan_benefits_fields.object.sequence}, class: "w-full" %> - <%= plan_benefits_fields.hidden_field :sequence %> -
\ No newline at end of file diff --git a/app/views/employer_setup/_plan_benefits_desc_fields.html.erb b/app/views/employer_setup/_plan_benefits_desc_fields.html.erb deleted file mode 100644 index 65cbdca..0000000 --- a/app/views/employer_setup/_plan_benefits_desc_fields.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit_desc, label: { text: "Benefit Description #{plan_benefits_fields.object.sequence}" }, class: "w-full" %> -
\ No newline at end of file diff --git a/app/views/employer_setup/_plan_benefits_fields.html.erb b/app/views/employer_setup/_plan_benefits_fields.html.erb deleted file mode 100644 index fcbe414..0000000 --- a/app/views/employer_setup/_plan_benefits_fields.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit, label: { text: "#{plan_benefits_fields.object.benefit_desc}" }, data: { benefits_template_picker_target: "benefit", sequence: plan_benefits_fields.object.sequence}, class: "w-full" %> - <%= plan_benefits_fields.hidden_field :benefit_desc %> - <%= plan_benefits_fields.hidden_field :sequence %> -
\ No newline at end of file diff --git a/app/views/employer_setup/_plan_fields.html.erb b/app/views/employer_setup/_plan_fields.html.erb deleted file mode 100644 index 4d10b03..0000000 --- a/app/views/employer_setup/_plan_fields.html.erb +++ /dev/null @@ -1,13 +0,0 @@ -
- <%= plan_fields.text_field :title, label: { text: "Plan Title" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-<% if f.object.persisted? %> -
- <%= plan_fields.text_field :plan_id, label: { text: "Plan Id" }, class: "w-full" %> -
-<% end %> -
- <%= f.select :template_id, options_from_collection_for_select(@plan_templates, :id, :title), { prompt: "Select Plan Template", class: "w-full" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
- - diff --git a/app/views/employer_setup/edit.html.erb b/app/views/employer_setup/edit.html.erb deleted file mode 100644 index 538d140..0000000 --- a/app/views/employer_setup/edit.html.erb +++ /dev/null @@ -1,126 +0,0 @@ -
-

Edit Employer

- <%= form_with model: @employer_setup, url: employer_setup_index_path, local: true, multipart: true do |f| %> -
-
-

General Information

-
-
-
-
-
-
- <%= f.text_field :employer_name, label: { text: "Employer Name" }, class: "w-full" %> -
-
- <%= f.text_field :slug, label: { text: "Slug" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full" %> -
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
- <%= f.select :network_provider, options_for_select(["Cigna", "Medcost"]), label: { text: "Provider Network" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :employer_logo, data: { logo_upload_target: "logofield" }, class: "w-full rounded-r-none", readonly: true %> -
-
- -
- <%= f.file_field :add_or_update_logo, class: "hidden", id: "file_upload_input_employer", data: { logo_upload_target: "input", logo_upload_type_param: "employer", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
- -
-
-
-
- -
-

Plans Information

-
-
-
-
- <% @employer_setup.plans.each_with_index do |plan, index| %> - <%= f.fields_for :plans, plan, child_index: index do |plan_fields| %> -
-
">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{index + 1}" %> -
- <%= render 'plan_fields', plan_fields: plan_fields, f: f, index: index %> -
"> - Benefit Values -
-
ml-[3px]">
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
- <%= plan_fields.hidden_field :_destroy %> - <%= button_tag "Remove Plan #{index + 1}", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-#{index % 2 == 1 ? 'bronze' : 'copper'} hover:text-platinum py-2 px-4 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-plan#remove" } %> -
-
- - <% end %> - <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> - -
-
- -
-

Alternative Network Information

-
-
-
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-75 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
- -
-
- <%= f.submit "Submit" %> -
-
- <% end %> -
diff --git a/app/views/employer_setup/general_information.html.erb b/app/views/employer_setup/general_information.html.erb deleted file mode 100644 index 9714876..0000000 --- a/app/views/employer_setup/general_information.html.erb +++ /dev/null @@ -1,47 +0,0 @@ -
-

New Employer Setup

-

General Information

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
-
-
- <%= f.text_field :name, label: { text: "Employer Name" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full" %> -
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
-
-
- <%= f.select :network, options_for_select(["Cigna", "Cigna+Regional", "Medcost"]), label: { text: "Provider Network" }, data: { controller: "form-toggle", action: "change->form-toggle#toggleDivs" }, class: "w-full" %> -
-
-
- - No file chosen - <%= f.file_field :employer_logo, class: "hidden", id: "file_upload_input" %> -
-
- <%= f.submit "Continue to Plans" %> -
-
- <% end %> -
- - - \ No newline at end of file diff --git a/app/views/employer_setup/index.html.erb b/app/views/employer_setup/index.html.erb deleted file mode 100644 index 5e28f74..0000000 --- a/app/views/employer_setup/index.html.erb +++ /dev/null @@ -1,10 +0,0 @@ -
-

Employer Setups

- <% plan_colors = IdCard::Setup::FORM_COLORS.push('copper', 'bronze').shuffle %> - <% @employer_setups.each_with_index do |es, index| %> - <% item_color_index = index == 0 ? 0 : index % plan_colors.length %> -
"> - <%= es.employer_name %> -
- <% end %> -
\ No newline at end of file diff --git a/app/views/employer_setup/network_exceptions.html.erb b/app/views/employer_setup/network_exceptions.html.erb deleted file mode 100644 index e0c7442..0000000 --- a/app/views/employer_setup/network_exceptions.html.erb +++ /dev/null @@ -1,68 +0,0 @@ -
-

New Employer Setup

-

Provider Network

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> - -
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-75 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
-
-
- <%= f.hidden_field :pl_plan_key, value: "fake" %> - <%= f.submit "Continue to Summary" %> -
- - - - <% end %> -
- - - - \ No newline at end of file diff --git a/app/views/employer_setup/new.html.erb b/app/views/employer_setup/new.html.erb deleted file mode 100644 index 39c708b..0000000 --- a/app/views/employer_setup/new.html.erb +++ /dev/null @@ -1,130 +0,0 @@ -
-
-

New Employer

- <%= form_with model: @employer_setup, url: import_employer_setup_index_path, data: { turbo: false }, local: true, multipart: true do |form| %> -
-
- <%= form.label :import_from_word, 'ID Card Setup Word Doc', class: "block text-platinum font-bold mb-1 md:mb-0 pr-4" %> - <%= form.file_field :import_from_word %> -
- <%= form.submit "Import" %> -
- <% end %> -
- <%= form_with model: @employer_setup, url: employer_setup_index_path, local: true, multipart: true do |f| %> -
-
-

General Information

-
-
-
-
-
-
- <%= f.text_field :employer_name, label: { text: "Employer Name" }, data: { logo_upload_target: "employer" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
- <%= f.select :network_provider, options_for_select(["Cigna", "Medcost"]), label: { text: "Provider Network" }, data: { logo_upload_target: "network" }, class: "w-full" %> -
-
-
-
-
- <%= f.text_field :employer_logo, value: "No logo added", data: { logo_upload_target: "logofield" }, class: "w-full rounded-r-none", readonly: true %> -
-
- -
-
- - <%= f.file_field :add_or_update_logo, class: "hidden", id: "file_upload_input_employer", data: { logo_upload_target: "previewContainer", logo_upload_type_param: "employer", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
-
-

Plans Information

-
-
-
-
- <%= f.fields_for :plans, @employer_setup.plans.first, child_index: 0 do |plan_fields| %> -
-
">
-
-ml-[6px] z-2 w-full"> - <%= "Plan 1" %> -
- <%= render 'plan_fields', plan_fields: plan_fields, f: f, index: 0 %> -
"> - Benefit Values -
-
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
- <%= plan_fields.hidden_field :_destroy %> - <%= button_tag "Remove Plan 1", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-copper hover:text-platinum py-2 px-4 font-semibold leading-tight rounded-lg border-3 border-copper w-full", data: { action: "add-plan#remove" } %> -
-
- <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> -
- -
-
- -
-

Alternative Network Information

-
-
-
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-55 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
- -
-
- <%= f.submit "Submit" %> -
-
- <% end %> - diff --git a/app/views/employer_setup/plans.html.erb b/app/views/employer_setup/plans.html.erb deleted file mode 100644 index 9e9f92e..0000000 --- a/app/views/employer_setup/plans.html.erb +++ /dev/null @@ -1,72 +0,0 @@ -
-

New Employer Setup

-

Medical Plans

-
- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
-
-
- <%= f.fields_for :benefit_descs do |plan_benefit_fields| %> - <%= plan_benefit_fields.hidden_field :plan_id, value: "descriptions" %> - <% @form.benefits_template.each do |bene| %> -
- <%= plan_benefit_fields.text_field "benefit_#{bene.sequence}", label: { text: "Benefit Description #{bene.sequence}" }, value: "#{bene.benefit_desc}", class: "w-full" %> -
- <% end %> - <% end %> -
- <% @form.plans.each_with_index do |plan, i| %> -
-
rounded-bl-lg">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{i + 1}" %> -
- <%= f.fields_for :plans, index: i do |plan_fields| %> -
- <%= plan_fields.text_field :plan_id, label: { text: "Plan Id" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-
- <%= f.select :template_id, options_from_collection_for_select(@form.plan_templates, :id, :title), { prompt: "Select Plan Template" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
- <% @form.benefits_template.each do |bene| %> -
-
- <%= plan_fields.text_field "benefit_#{bene.sequence}", label: { text: "Benefit Value #{bene.sequence}" }, data: { benefits_template_picker_target: "benefit", sequence: "#{bene.sequence}"}, class: "w-full" %> -
-
- <% end %> - <% end %> -
- <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> - -
-
-
- <%= f.submit "Continue to Provider Network" %> -
- <% end %> -
-
diff --git a/app/views/employer_setup/show.html.erb b/app/views/employer_setup/show.html.erb deleted file mode 100644 index e69de29..0000000 diff --git a/app/views/employer_setup/summary.html.erb b/app/views/employer_setup/summary.html.erb deleted file mode 100644 index c6f695d..0000000 --- a/app/views/employer_setup/summary.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -
-

New Employer Setup

-

Summary

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
- <%= f.submit "Submit" %> -
- <% end %> -
\ No newline at end of file diff --git a/app/views/employers/edit.html.erb b/app/views/employers/edit.html.erb index 25024b9..b7bb006 100644 --- a/app/views/employers/edit.html.erb +++ b/app/views/employers/edit.html.erb @@ -1,10 +1,20 @@
+
+ <%= link_to employer_path(@employer.slug), class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer" %> +
+
+ <% end %> +

Edit Employer

<%= form_with model: @employer, local: true, multipart: true do |f| %>
-
-
+
+
<%= f.text_field :name, label: { text: "Employer Name" }, class: "w-full" %>
@@ -15,19 +25,22 @@ <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %>
-
+
+

Admin

+
+
+
- <%= f.text_field :slug, label: { text: "Slug" }, class: "w-full" %> + <%= f.text_field :slug, label: { text: "URL Slug" }, class: "w-full pointer-events-none opacity-65 cursor-not-allowed" %>
- <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full" %> + <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full pointer-events-none opacity-65 cursor-not-allowed" %>
<%= f.submit "Save Employer" %> - <%= link_to "Back", employer_path(@employer.slug), class: "flex justify-center items-center cursor-pointer bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-sm h-10 transition duration-100" %>
<% end %> diff --git a/app/views/employers/index.html.erb b/app/views/employers/index.html.erb index a8fa8ff..98b6c03 100644 --- a/app/views/employers/index.html.erb +++ b/app/views/employers/index.html.erb @@ -1,18 +1,37 @@ -
-
-

Employers

-
-
- <%= link_to "NEW", new_employer_path %> +
+
+ <%= link_to dashboard_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Dashboard" %> +
+
+ <% end %> + <%= link_to 'Run Employer Automations (Beta)', beta_automation_simulation_employers_path, data: { turbo: false }, class: "flex justify-center items-center cursor-pointer hover:bg-yellow-300 bg-deepcove border-2 border-yellow-300 text-yellow-300 hover:text-deepcove text-lg font-bold px-3 rounded-lg h-10" %> +
+
+ Unassigned VHCS Group Numbers (Beta): +
+
+ <%= @beta_unassigned_group_numbers.present? ? @beta_unassigned_group_numbers.join(', ') : "None" %> +
+
+
+
+

Employers

+
+
+ <%= link_to "NEW", new_employer_path, class: "w-full flex text-3xl" %>
<% if @uninitialized.present? %>

In Process:

-

- <%= "Waiting for Groups Number Entry" %> -

+

+ <%= "Needs Group Number Entry" %> +

<% if @uninitialized.not_automation_ready.present? %>
<% @uninitialized.not_automation_ready.each do |emp| %> @@ -31,15 +50,15 @@ <% end %>
-

- <%= "Waiting for Employer to be created in VHCS" %> +

+ <%= "Waiting for VHCS Employer" %>

<% if @uninitialized.missing_keychain_initialization.present? %> -
+
<% @uninitialized.missing_keychain_initialization.each do |emp| %> -
+
- <%= link_to emp.name, employer_path(emp.slug), class: "text-verdigris-vivid hover:text-platinum" %> + <%= link_to emp.name, employer_path(emp.slug), class: "text-bluemana hover:text-platinum" %>
<%= "(Effective #{emp.effective_date})" %> @@ -48,19 +67,19 @@ <% end %>
<% else %> -
+
<% end %>
-

- <%= "Waiting for Plans to be created in VHCS" %> +

+ <%= "Waiting for VHCS Plans" %>

<% if @uninitialized.missing_plans_initialization.present? %> -
+
<% @uninitialized.missing_plans_initialization.each do |emp| %> -
+
- <%= link_to emp.name, employer_path(emp.slug), class: "text-copper hover:text-platinum" %> + <%= link_to emp.name, employer_path(emp.slug), class: "text-[#4FA8F8] hover:text-platinum" %>
<%= "(Effective #{emp.effective_date})" %> @@ -69,19 +88,19 @@ <% end %>
<% else %> -
+
<% end %>
-

- <%= "Waiting for Inital Members to be created in VHCS" %> +

+ <%= "Waiting for VHCS Members" %>

<% if @uninitialized.missing_members_initialization.present? %> -
+
<% @uninitialized.missing_members_initialization.each do |emp| %> -
-
- <%= link_to emp.name, employer_path(emp.slug), class: "text-bluemana hover:text-platinum" %> +
+
+ <%= link_to emp.name, employer_path(emp.slug), class: "text-[#3388FF] hover:text-platinum" %>
<% member_counter_color = "text-".concat(emp.members.present? ? "limegreen" : "brightlava") %> @@ -99,7 +118,37 @@ <% end %>
<% else %> -
+
+ <% end %> +
+
+

+ <%= "Ready for ID Card Activation" %> +

+ <% if @uninitialized.ready_for_id_card_activation.present? %> +
+ <% @uninitialized.ready_for_id_card_activation.each do |emp| %> +
+
+ <%= link_to emp.name, employer_path(emp.slug), class: "text-copper hover:text-platinum" %> +
+
+ <% member_counter_color = "text-".concat(emp.members.present? ? "limegreen" : "brightlava") %> +
+ Members: + + <%= emp.members.count %> + +
+
+ <%= "(Effective #{emp.effective_date})" %> +
+
+
+ <% end %> +
+ <% else %> +
<% end %>
<% end %> diff --git a/app/views/employers/new.html.erb b/app/views/employers/new.html.erb index 3412795..1e2cfd4 100644 --- a/app/views/employers/new.html.erb +++ b/app/views/employers/new.html.erb @@ -1,21 +1,20 @@
-
-

New Employer

- <%= form_with model: @employer, url: import_employers_path, data: { turbo: false }, local: true, multipart: true do |form| %> -
-
- <%= form.label :import_from_word, 'ID Card Setup Word Doc', class: "block text-platinum font-bold mb-1 md:mb-0 pr-4" %> - <%= form.file_field :import_from_word %> +
+ <%= link_to employers_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer Control" %> +
- <%= form.submit "Import", class: "h-[40px]" %> -
- <% end %> + <% end %>
+

New Employer

<%= form_with model: @employer, local: true, multipart: true do |f| %>
-
-
+
+
<%= f.text_field :name, label: { text: "Employer Name" }, data: { logo_upload_target: "employer" }, class: "w-full" %>
diff --git a/app/views/employers/new_with_import.html.erb b/app/views/employers/new_with_import.html.erb new file mode 100644 index 0000000..0c7486a --- /dev/null +++ b/app/views/employers/new_with_import.html.erb @@ -0,0 +1,46 @@ +
+
+ <%= link_to employers_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer Control" %> +
+
+ <% end %> +
+
+

New Employer

+ <%= form_with model: @employer, url: import_employers_path, data: { turbo: false }, local: true, multipart: true do |form| %> +
+
+ <%= form.label :import_from_word, 'ID Card Setup Word Doc', class: "block text-platinum font-bold mb-1 md:mb-0 pr-4" %> + <%= form.file_field :import_from_word %> +
+ <%= form.submit "Import", class: "h-[40px]" %> +
+ <% end %> +
+ <%= form_with model: @employer, local: true, multipart: true do |f| %> +
+
+
+
+
+ <%= f.text_field :name, label: { text: "Employer Name" }, data: { logo_upload_target: "employer" }, class: "w-full" %> +
+
+ <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> +
+
+ <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> +
+
+
+
+
+ <%= f.submit "Create New Employer" %> +
+
+ <% end %> +
diff --git a/app/views/employers/show.html.erb b/app/views/employers/show.html.erb index d526e66..6f3c640 100644 --- a/app/views/employers/show.html.erb +++ b/app/views/employers/show.html.erb @@ -1,7 +1,14 @@
- <%= link_to employers_path, class: "flex h-10 w-10 text-xl transition duration-100" do %> - <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-full text-center text-bluemana hover:text-bronze" %> - <% end %> +
+ <%= link_to employers_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer Control" %> +
+
+ <% end %> +

<%= @employer.name %>

@@ -9,8 +16,11 @@ <%= image_tag image_id_card_employer_logo_path(@employer.id_card_setup.employer_logo.id), class: "max-h-[50px] object-contain shadow-[0_0_10px_3px_#93c5fd] bg-platinum" %> <% end %>
-
- <%= link_to 'Edit Employer', edit_employer_path(@employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-1/3 cursor-pointer bg-bluetang hover:bg-deepcove border-2 border-bluetang text-platinum text-lg font-bold px-3 rounded-lg h-10 transition duration-100" %> +
+ <%= link_to 'Edit Employer', edit_employer_path(@employer.slug), data: { turbo: false }, class: "flex justify-center items-center cursor-pointer bg-bluetang hover:bg-deepcove border-2 border-bluetang text-platinum text-lg font-bold px-10 rounded-lg h-10 transition duration-100" %> +
+
+ <%= link_to 'Delete Employer (Beta)', employer_path(@employer), data: { turbo_method: :delete }, class: "flex justify-center items-center cursor-pointer hover:bg-yellow-300 bg-deepcove border-2 border-yellow-300 text-yellow-300 hover:text-deepcove text-lg font-bold px-3 rounded-lg h-10 transition duration-100" %>
@@ -83,9 +93,9 @@
<%= link_to "General", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> <%= link_to "Plans", plans_employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Exceptions (Optional)', field_exceptions_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <% unless @employer.id_card_setup.active %> - <%= link_to 'Activate ID Cards', update_active_status_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-brightlava hover:bg-deepcove border-2 border-brightlava text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Alternate ID Cards (Optional)', field_exceptions_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <% if @employer.id_card_setup.activation_ready? %> + <%= link_to 'Activate ID Card Setup', update_active_status_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-brightlava hover:bg-deepcove border-2 border-brightlava text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> <% end %>
@@ -97,10 +107,9 @@
- <%= link_to 'Generate Sample Cards', generate_sample_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for print)', generate_print_id_card_print_path(id: @employer.slug),data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for display)', generate_mobile_display_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for download)', generate_full_page_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Sample Cards', generate_sample_id_card_print_path(id: @employer.id), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} #{@employer.id_card_setup.sample_card_print_ready? ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Group Cards (for print)', generate_print_id_card_print_path(id: @employer.slug),data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.id_card_setup.member_cards_print_ready? ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Group Cards (for download)', generate_full_page_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.id_card_setup.member_cards_print_ready? ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %>
<% else %> @@ -108,46 +117,5 @@ <% end %>
-
-
-
-

Britton Web Module

-
-
-
- <% if @employer.claims_check_enabled? %> - - <% else %> - <%= link_to "Enable Britton Web", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-copper hover:bg-deepcove border-4 border-copper text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100" %> - <% end %> -
-
-
-
-

Claims Check Module

-
-
-
- <% if @employer.claims_check_enabled? %> - - <% else %> - <%= link_to "Enable Claims Check", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-cobalt-vivid hover:bg-deepcove border-4 border-cobalt-vivid text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100 pointer-events-none opacity-50 cursor-not-allowed" %> - <% end %> -
-
-
-
-
-

FairosRx Eligibility Module

-
-
-
- <% if @employer.claims_check_enabled? %> - - <% else %> - <%= link_to "Enable FairosRx Eligibility", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-verdigris-vivid hover:bg-deepcove border-4 border-verdigris-vivid text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100 pointer-events-none opacity-50 cursor-not-allowed" %> - <% end %> -
-
\ No newline at end of file diff --git a/app/views/employers/show_all_setups.html.erb b/app/views/employers/show_all_setups.html.erb new file mode 100644 index 0000000..f17db32 --- /dev/null +++ b/app/views/employers/show_all_setups.html.erb @@ -0,0 +1,160 @@ +
+
+ <%= link_to employers_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer Control" %> +
+
+ <% end %> +
+
+

<%= @employer.name %>

+
+ <% if @employer&.id_card_setup&.employer_logo&.filename %> + <%= image_tag image_id_card_employer_logo_path(@employer.id_card_setup.employer_logo.id), class: "max-h-[50px] object-contain shadow-[0_0_10px_3px_#93c5fd] bg-platinum" %> + <% end %> +
+
+ <%= link_to 'Edit Employer', edit_employer_path(@employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-1/3 cursor-pointer bg-bluetang hover:bg-deepcove border-2 border-bluetang text-platinum text-lg font-bold px-3 rounded-lg h-10 transition duration-100" %> +
+
+
+
+
+

Employer Information

+
+
+
+

"> + └── Status: + <%= @employer.active == false ? "inactive" : "active" %> +

+

+ ├── Effective Date: + <%= @employer.effective_date %> +

+
+ └── Key Chain +
+ <% @employer.attributes.with_indifferent_access.slice(:pl_plan_key, :company_pb_entity_key, :group_number).each do |attribute_name, attribute_value| %> +

"> + ├── <%= attribute_name.titleize %>: + <%= attribute_value.present? ? attribute_value.to_s : "waiting" %> +

+ <% end %> + <% if @employer&.id_card_setup&.plans.present? %> +
+ └── Plans +
+ <% @employer.id_card_setup.plans.pluck(:title, :pb_product_key).each do |plan| %> +
+ ├── <%= plan.first %> +
+

"> + └── PB Product Key: + <%= plan.last.present? ? plan.last.to_s : "waiting" %> +

+ <% end %> + <% end %> +
+
+
+
+ Admin +
+ +
+
+ <%= link_to 'Sync Employer with VHCS', refresh_employer_information_employers_path(id: @employer.id), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-brightlava hover:bg-deepcove border-2 border-brightlava text-platinum text-lg font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Sync Members with VHCS', refresh_employer_members_information_employers_path(id: @employer.id),data: { turbo: false }, class: "flex justify-center items-center w-full bg-brightlava hover:bg-deepcove border-2 border-brightlava text-platinum text-lg font-bold px-3 rounded-lg h-10 transition duration-100" %> +
+
+
+
+ <% module_color = IdCard::Setup::MODULE_COLOR %> +
+

ID Card Module

+
+
+
+ <% if @employer.id_card_enabled? %> +
+
+
+ Setup +
+ +
+
+ <%= link_to "General", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to "Plans", plans_employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Exceptions (Optional)', field_exceptions_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <% unless @employer.id_card_setup.active %> + <%= link_to 'Activate ID Cards', update_active_status_employer_id_card_setup_index_path(employer_id: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-brightlava hover:bg-deepcove border-2 border-brightlava text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <% end %> +
+
+
+
+
+ Actions +
+ +
+
+ <%= link_to 'Generate Sample Cards', generate_sample_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Group Cards (for print)', generate_print_id_card_print_path(id: @employer.slug),data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Group Cards (for display)', generate_mobile_display_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> + <%= link_to 'Generate Group Cards (for download)', generate_full_page_id_card_print_path(id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-#{module_color} hover:bg-deepcove border-2 border-#{module_color} text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> +
+
+ <% else %> + <%= link_to "Enable ID Card", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-#{module_color} hover:bg-deepcove border-4 border-atmosphere text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100" %> + <% end %> +
+
+
+
+
+

Britton Web Module

+
+
+
+ <% if @employer.claims_check_enabled? %> + + <% else %> + <%= link_to "Enable Britton Web", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-copper hover:bg-deepcove border-4 border-copper text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100" %> + <% end %> +
+
+
+
+

Claims Check Module

+
+
+
+ <% if @employer.claims_check_enabled? %> + + <% else %> + <%= link_to "Enable Claims Check", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-cobalt-vivid hover:bg-deepcove border-4 border-cobalt-vivid text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100 pointer-events-none opacity-50 cursor-not-allowed" %> + <% end %> +
+
+
+
+
+

FairosRx Eligibility Module

+
+
+
+ <% if @employer.claims_check_enabled? %> + + <% else %> + <%= link_to "Enable FairosRx Eligibility", employer_id_card_setup_index_path(employer_id: @employer.slug), data: { turbo: false }, class: "flex justify-center items-center w-full h-full cursor-pointer bg-verdigris-vivid hover:bg-deepcove border-4 border-verdigris-vivid text-platinum text-xl font-bold px-3 rounded-md mt-3 transition duration-100 pointer-events-none opacity-50 cursor-not-allowed" %> + <% end %> +
+
+
+
\ No newline at end of file diff --git a/app/views/employers_old/_alt_network_logo_fields.html.erb b/app/views/employers_old/_alt_network_logo_fields.html.erb deleted file mode 100644 index 41f0d76..0000000 --- a/app/views/employers_old/_alt_network_logo_fields.html.erb +++ /dev/null @@ -1,32 +0,0 @@ -
-
-
-
- <%= f.select :network_logo, options_for_select(CardLogoFile.where(logo_type: 'network').pluck(:filename).map { |fn| [fn, fn]}), { include_blank: "Select or Add Network Logo", class: "rounded-r-none" }, { data: { logo_upload_target: "logoSelect" }} %> -
-
- -
- -
-
- <%= network_fields.file_field :network_logo_file, class: "hidden", id: "file_upload_input_NEW_RECORD", data: { add_alt_network_logo_target: "networkLogo", logo_upload_type_param: "network", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
- <%= network_fields.select :exception_type, options_for_select(["Zip","State"]), label: { text: "Exception Type" }, prompt: "Select Type", class: "w-full" %> -
-
- <%= network_fields.text_field :exception_value, label: { text: "Exception Value" }, class: "w-full" %> -
-
-
-
- <%= network_fields.hidden_field :_destroy %> - <%= button_tag "Remove", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-NEXT_SECONDARY_COLOR hover:text-platinum py-1 px-2 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-alt-network-logo#remove" } %> -
-
\ No newline at end of file diff --git a/app/views/employers_old/_alt_network_logo_fields_new.html.erb b/app/views/employers_old/_alt_network_logo_fields_new.html.erb deleted file mode 100644 index b37cef5..0000000 --- a/app/views/employers_old/_alt_network_logo_fields_new.html.erb +++ /dev/null @@ -1,15 +0,0 @@ - - diff --git a/app/views/employers_old/_first_plan_fields.html.erb b/app/views/employers_old/_first_plan_fields.html.erb deleted file mode 100644 index a276125..0000000 --- a/app/views/employers_old/_first_plan_fields.html.erb +++ /dev/null @@ -1,23 +0,0 @@ -
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_desc_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
-
-
rounded-bl-lg">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{i + 1}" %> -
-
- <%= plan_fields.text_field :title, label: { text: "Plan Title" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-
- <%= plan_fields.text_field :plan_id, label: { text: "Plan Id" }, class: "w-full" %> -
-
- <%= f.select :template_id, options_from_collection_for_select(@form.plan_templates, :id, :title), { prompt: "Select Plan Template" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
\ No newline at end of file diff --git a/app/views/employers_old/_plan_benefit_only_fields.erb b/app/views/employers_old/_plan_benefit_only_fields.erb deleted file mode 100644 index fb17ad2..0000000 --- a/app/views/employers_old/_plan_benefit_only_fields.erb +++ /dev/null @@ -1,4 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit, label: { text: "#{plan_benefits_fields.object.benefit_desc}" }, data: { benefits_template_picker_target: "benefit", sequence: plan_benefits_fields.object.sequence}, class: "w-full" %> - <%= plan_benefits_fields.hidden_field :sequence %> -
\ No newline at end of file diff --git a/app/views/employers_old/_plan_benefits_desc_fields.html.erb b/app/views/employers_old/_plan_benefits_desc_fields.html.erb deleted file mode 100644 index 65cbdca..0000000 --- a/app/views/employers_old/_plan_benefits_desc_fields.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit_desc, label: { text: "Benefit Description #{plan_benefits_fields.object.sequence}" }, class: "w-full" %> -
\ No newline at end of file diff --git a/app/views/employers_old/_plan_benefits_fields.html.erb b/app/views/employers_old/_plan_benefits_fields.html.erb deleted file mode 100644 index fcbe414..0000000 --- a/app/views/employers_old/_plan_benefits_fields.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -
- <%= plan_benefits_fields.text_field :benefit, label: { text: "#{plan_benefits_fields.object.benefit_desc}" }, data: { benefits_template_picker_target: "benefit", sequence: plan_benefits_fields.object.sequence}, class: "w-full" %> - <%= plan_benefits_fields.hidden_field :benefit_desc %> - <%= plan_benefits_fields.hidden_field :sequence %> -
\ No newline at end of file diff --git a/app/views/employers_old/_plan_fields.html.erb b/app/views/employers_old/_plan_fields.html.erb deleted file mode 100644 index 0666b22..0000000 --- a/app/views/employers_old/_plan_fields.html.erb +++ /dev/null @@ -1,14 +0,0 @@ -
- <%= plan_fields.text_field :title, label: { text: "Plan Title" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-<% if f.object.persisted? %> -
- <%= plan_fields.text_field :pb_product_key, label: { text: "Plan Product Key" }, class: "w-full" %> -
-<% else %> -
- <%= f.select :template_id, options_from_collection_for_select(@plan_templates, :id, :title), { prompt: "Select Plan Template", class: "w-full" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
-<% end %> - - diff --git a/app/views/employers_old/edit.html.erb b/app/views/employers_old/edit.html.erb deleted file mode 100644 index e5e8037..0000000 --- a/app/views/employers_old/edit.html.erb +++ /dev/null @@ -1,127 +0,0 @@ -
-

Edit Employer

- <%= form_with model: @employer, local: true, multipart: true do |f| %> -
-
-

General Information

-
-
-
-
-
-
- <%= f.text_field :name, label: { text: "Employer Name" }, class: "w-full" %> -
-
- <%= f.text_field :slug, label: { text: "Slug" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full" %> -
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
- <%= f.select :network_provider, options_for_select(["Cigna", "Medcost"]), label: { text: "Provider Network" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :employer_logo_filename, data: { logo_upload_target: "logofield" }, class: "w-full rounded-r-none", readonly: true %> -
-
- -
- - <%= f.file_field :add_or_update_logo, class: "hidden", id: "file_upload_input_employer", data: { logo_upload_target: "previewContainer", logo_upload_type_param: "employer", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
- -
-

Plans Information

-
-
-
-
- <% @employer.plans.each_with_index do |plan, index| %> - <%= f.fields_for :plans, plan, child_index: index do |plan_fields| %> -
-
">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{index + 1}" %> -
- <%= render 'plan_fields', plan_fields: plan_fields, f: f, index: index %> -
"> - Benefit Values -
-
ml-[3px]">
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
- <%= plan_fields.hidden_field :_destroy %> - <%= button_tag "Remove Plan #{index + 1}", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-#{index % 2 == 1 ? 'bronze' : 'copper'} hover:text-platinum py-2 px-4 font-semibold leading-tight rounded-lg border-3 border-NEXT_SECONDARY_COLOR w-full", data: { action: "add-plan#remove" } %> -
-
- - <% end %> - <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> - -
-
- -
-

Alternative Network Information

-
-
-
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-75 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
- -
-
- <%= f.submit "Submit" %> - <%= link_to "Back", employer_path(@employer.slug), class: "flex justify-center items-center cursor-pointer bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-sm h-10 transition duration-100" %> -
-
- <% end %> -
diff --git a/app/views/employers_old/general_information.html.erb b/app/views/employers_old/general_information.html.erb deleted file mode 100644 index 9714876..0000000 --- a/app/views/employers_old/general_information.html.erb +++ /dev/null @@ -1,47 +0,0 @@ -
-

New Employer Setup

-

General Information

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
-
-
- <%= f.text_field :name, label: { text: "Employer Name" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :pl_plan_key, label: { text: "Pl Plan Key" }, class: "w-full" %> -
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
-
-
- <%= f.select :network, options_for_select(["Cigna", "Cigna+Regional", "Medcost"]), label: { text: "Provider Network" }, data: { controller: "form-toggle", action: "change->form-toggle#toggleDivs" }, class: "w-full" %> -
-
-
- - No file chosen - <%= f.file_field :employer_logo, class: "hidden", id: "file_upload_input" %> -
-
- <%= f.submit "Continue to Plans" %> -
-
- <% end %> -
- - - \ No newline at end of file diff --git a/app/views/employers_old/index.html.erb b/app/views/employers_old/index.html.erb deleted file mode 100644 index aece1dd..0000000 --- a/app/views/employers_old/index.html.erb +++ /dev/null @@ -1,33 +0,0 @@ -
-
-

Employers

- <%= link_to new_employer_path, class: "flex justify-center items-center h-8 w-8 ml-2 mb-6 text-sm text-bronze bg-deepcove hover:bg-cobalt font-semibold p-1 rounded-lg border-2 border-cobalt" do %> - <%= icon "clipboard-plus", library: "lucide" %> - <% end %> - -
- <% plan_colors = IdCard::Setup::FORM_COLORS.push('copper', 'bronze').shuffle %> - <% @color_index = 0 %> -

In Process:

- <% @employers.inactive.each_with_index do |emp, index| %> - <% item_color_index = @color_index == 0 ? 0 : @color_index % plan_colors.length %> -
"> - <%= link_to emp.name, employer_path(emp.slug), class: "hover:text-#{plan_colors[item_color_index]}" %> -
- <%= "(Effective #{emp.effective_date})" %> -
-
- <% @color_index += 1 %> - <% end %> -

Live:

- <% @employers.active.each_with_index do |emp, index| %> - <% item_color_index = @color_index == 0 ? 0 : @color_index % plan_colors.length %> -
"> - <%= link_to emp.name, employer_path(emp.slug), class: "hover:text-#{plan_colors[item_color_index]}" %> -
- <%= "(#{emp.members.count} Members)" %> -
-
- <% @color_index += 1 %> - <% end %> -
\ No newline at end of file diff --git a/app/views/employers_old/network_exceptions.html.erb b/app/views/employers_old/network_exceptions.html.erb deleted file mode 100644 index e0c7442..0000000 --- a/app/views/employers_old/network_exceptions.html.erb +++ /dev/null @@ -1,68 +0,0 @@ -
-

New Employer Setup

-

Provider Network

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> - -
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-75 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
-
-
- <%= f.hidden_field :pl_plan_key, value: "fake" %> - <%= f.submit "Continue to Summary" %> -
- - - - <% end %> -
- - - - \ No newline at end of file diff --git a/app/views/employers_old/new.html.erb b/app/views/employers_old/new.html.erb deleted file mode 100644 index 9b7d5c3..0000000 --- a/app/views/employers_old/new.html.erb +++ /dev/null @@ -1,136 +0,0 @@ -
-
-

New Employer

- <%= form_with model: @employer, url: import_employers_path, data: { turbo: false }, local: true, multipart: true do |form| %> -
-
- <%= form.label :import_from_word, 'ID Card Setup Word Doc', class: "block text-platinum font-bold mb-1 md:mb-0 pr-4" %> - <%= form.file_field :import_from_word %> -
- <%= form.submit "Import", class: "h-[40px]" %> -
- <% end %> -
- <%= form_with model: @employer, local: true, multipart: true do |f| %> -
-
-

General Information

-
-
-
-
-
-
- <%= f.text_field :name, label: { text: "Employer Name" }, data: { logo_upload_target: "employer" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
- <%= f.select :network_provider, options_for_select(["Cigna", "Medcost"]), label: { text: "Provider Network" }, data: { logo_upload_target: "network" }, class: "w-full" %> - <%= f.hidden_field :single_card_template, value: @employer.single_card_template %> - <%= f.hidden_field :default_network_logo, value: @employer.default_network_logo %> - <%= f.hidden_field :card_provider_id, value: @employer.card_provider_id %> - <%= f.hidden_field :card_rx_id, value: @employer.card_rx_id %> -
-
-
-
-
- <%= f.text_field :employer_logo_filename, label: { text: "Employer Logo" }, default: "No logo added", data: { logo_upload_target: "logofield" }, class: "w-full rounded-r-none", readonly: true %> -
-
- -
-
- - <%= f.file_field :add_or_update_logo, class: "hidden", id: "file_upload_input_employer", data: { logo_upload_target: "previewContainer", logo_upload_type_param: "employer", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
-
-

Plans Information

-
-
-
-
- <% @employer.plans.each_with_index do |plan, index| %> - <%= f.fields_for :plans, plan, child_index: index do |plan_fields| %> -
-
">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{index + 1}" %> -
- <%= render 'plan_fields', plan_fields: plan_fields, f: f, index: index %> -
"> - Benefit Values -
-
ml-[3px]">
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
- <%= plan_fields.hidden_field :_destroy %> - <%= button_tag "Remove Plan #{index + 1}", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-copper hover:text-platinum py-2 px-4 font-semibold leading-tight rounded-lg border-3 border-copper w-full", data: { action: "add-plan#remove" } %> -
-
- <% end %> - <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> -
- -
-
- -
-

Alternative Network Information

-
-
-
-
- <%= button_tag "Add a Regional Logo", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-55 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-alt-network-logo#add", add_alt_network_logo_target: "button" } %> -
- -
-
- <%= f.submit "Submit" %> -
-
- <% end %> -
diff --git a/app/views/employers_old/new_new.html.erb b/app/views/employers_old/new_new.html.erb deleted file mode 100644 index e7b5f09..0000000 --- a/app/views/employers_old/new_new.html.erb +++ /dev/null @@ -1,170 +0,0 @@ -
-
-

New Employer

- <%= form_with model: @employer, url: import_employers_path, data: { turbo: false }, local: true, multipart: true do |form| %> -
-
- <%= form.label :import_from_word, 'ID Card Setup Word Doc', class: "block text-platinum font-bold mb-1 md:mb-0 pr-4" %> - <%= form.file_field :import_from_word %> -
- <%= form.submit "Import", class: "h-[40px]" %> -
- <% end %> -
- <%= form_with model: @employer, local: true, multipart: true do |f| %> -
-
-

General Information

-
-
-
-
-
-
- <%= f.text_field :name, label: { text: "Employer Name" }, data: { logo_upload_target: "employer" }, class: "w-full" %> -
-
- <%= f.text_field :group_number, label: { text: "Group/Medical Number" }, class: "w-full" %> -
-
-
-
- <%= f.text_field :effective_date, label: { text: "Effective Date" }, class: "w-full" %> -
-
- <%= f.select :network_provider, options_for_select(["Cigna", "Medcost"]), label: { text: "Provider Network" }, data: { logo_upload_target: "network" }, class: "w-full" %> - <%= f.hidden_field :single_card_template, value: @employer.single_card_template %> - <%= f.hidden_field :default_network_logo, value: @employer.default_network_logo %> - <%= f.hidden_field :card_provider_id, value: @employer.card_provider_id %> - <%= f.hidden_field :card_rx_id, value: @employer.card_rx_id %> -
-
-
-
-
- <%= f.text_field :employer_logo_filename, label: { text: "Employer Logo" }, default: "No logo added", data: { logo_upload_target: "logofield" }, class: "w-full rounded-r-none", readonly: true %> -
-
- -
-
- - <%= f.file_field :add_or_update_logo, class: "hidden", id: "file_upload_input_employer", data: { logo_upload_target: "previewContainer", logo_upload_type_param: "employer", action: "change->logo-upload#uploadLogo" }, direct_upload: true %> -
-
-
-
-

Plans Information

-
-
-
-
- <% @employer.plans.each_with_index do |plan, index| %> - <%= f.fields_for :plans, plan, child_index: index do |plan_fields| %> -
-
">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{index + 1}" %> -
- <%= render 'plan_fields', plan_fields: plan_fields, f: f, index: index %> -
"> - Benefit Values -
-
ml-[3px]">
- <%= plan_fields.fields_for :plan_benefits do |plan_benefits_fields| %> - <%= render 'plan_benefits_fields', plan_benefits_fields: plan_benefits_fields %> - <% end %> -
- <%= plan_fields.hidden_field :_destroy %> - <%= button_tag "Remove Plan #{index + 1}", class: "cursor-pointer bg-deepcove hover:bg-brightlava text-xl font-bold text-copper hover:text-platinum py-2 px-4 font-semibold leading-tight rounded-lg border-3 border-copper w-full", data: { action: "add-plan#remove" } %> -
-
- <% end %> - <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> -
- -
-
- -
-

ID Card Exceptions Information

-
-
-
- <%= button_tag "Add an Exception", class: "cursor-pointer text-lg font-medium py-2 px-4 rounded w-1/7 h-35 my-8 text-[#E0E0E0] rounded-lg border border-[#C2C2C2] hover:shadow-[0_0_10px_3px_#93c5fd]", data: { action: "add-exception#addExemption", add_exception_target: "exceptionButton" } %> - -
-
- <%= f.submit "Submit" %> -
-
- <% end %> -
diff --git a/app/views/employers_old/plans.html.erb b/app/views/employers_old/plans.html.erb deleted file mode 100644 index 9e9f92e..0000000 --- a/app/views/employers_old/plans.html.erb +++ /dev/null @@ -1,72 +0,0 @@ -
-

New Employer Setup

-

Medical Plans

-
- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
-
-
- <%= f.fields_for :benefit_descs do |plan_benefit_fields| %> - <%= plan_benefit_fields.hidden_field :plan_id, value: "descriptions" %> - <% @form.benefits_template.each do |bene| %> -
- <%= plan_benefit_fields.text_field "benefit_#{bene.sequence}", label: { text: "Benefit Description #{bene.sequence}" }, value: "#{bene.benefit_desc}", class: "w-full" %> -
- <% end %> - <% end %> -
- <% @form.plans.each_with_index do |plan, i| %> -
-
rounded-bl-lg">
-
-ml-[6px] z-2 w-full"> - <%= "Plan #{i + 1}" %> -
- <%= f.fields_for :plans, index: i do |plan_fields| %> -
- <%= plan_fields.text_field :plan_id, label: { text: "Plan Id" }, class: "w-full", data: { add_plan_target: "plan" } %> -
-
- <%= f.select :template_id, options_from_collection_for_select(@form.plan_templates, :id, :title), { prompt: "Select Plan Template" }, { data: { action: "benefits-template-picker#fetchData" }} %> -
- <% @form.benefits_template.each do |bene| %> -
-
- <%= plan_fields.text_field "benefit_#{bene.sequence}", label: { text: "Benefit Value #{bene.sequence}" }, data: { benefits_template_picker_target: "benefit", sequence: "#{bene.sequence}"}, class: "w-full" %> -
-
- <% end %> - <% end %> -
- <% end %> - <%= button_tag "Add a Plan", class: "cursor-pointer text-2xl font-bold py-2 pr-6 mt-10 w-[calc(24%-1rem)] w-1/4 min-h-[940px] text-[#E0E0E0] rounded-lg font-medium border border-[#E0E0E0] bg-[#173057] hover:bg-transparent hover:shadow-[0_0_10px_3px_#93c5fd] transition-colors duration-150", data: { action: "add-plan#add", add_plan_target: "button" } %> - -
-
-
- <%= f.submit "Continue to Provider Network" %> -
- <% end %> -
-
diff --git a/app/views/employers_old/show.html.erb b/app/views/employers_old/show.html.erb deleted file mode 100644 index 2893391..0000000 --- a/app/views/employers_old/show.html.erb +++ /dev/null @@ -1,62 +0,0 @@ -
-
-

<%= @employer.name %>

-
- <%= image_tag image_card_logo_file_path(@employer.employer_logo_filename), class: "max-h-[50px] object-contain shadow-[0_0_10px_3px_#93c5fd]" %> -
-
-
-
-
-

Employer Information

-
-
-
-

"> - └── Status: - <%= @employer.active == false ? "inactive" : "active" %> -

-

- ├── Effective Date: - <%= @employer.effective_date %> -

-
- └── Key Chain -
- <% @employer.attributes.with_indifferent_access.slice(:pl_plan_key, :company_pb_entity_key, :group_number).each do |attribute_name, attribute_value| %> -

"> - ├── <%= attribute_name.titleize %>: - <%= attribute_value.present? ? attribute_value.to_s : "waiting" %> -

- <% end %> -
- └── Plans -
- <% @employer.plans.pluck(:title, :pb_product_key).each do |plan| %> -
- ├── <%= plan.first %> -
-

"> - └── PB Product Key: - <%= plan.last.present? ? plan.last.to_s : "waiting" %> -

- <% end %> -
-
- <%= link_to 'Edit', edit_employer_path(@employer.slug), class: "hover:text-atmosphere" %> -

|

- <%= link_to 'Back', employers_path, class: "hover:text-atmosphere" %> -
-
-
-
-

Actions

-
-
- <%= link_to 'Generate Sample Cards', generate_sample_sample_id_cards_path(employer_slug: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-2/3 cursor-pointer bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for print)', generate_print_sample_id_cards_path(employer_slug: @employer.slug ),data: { turbo: false }, class: "flex justify-center items-center w-2/3 #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for display)', generate_mobile_display_sample_id_cards_path(employer_slug: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-2/3 #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> - <%= link_to 'Generate Group Cards (for download)', generate_full_page_sample_id_cards_path(employer_slug: @employer.slug ), data: { turbo: false }, class: "flex justify-center items-center w-2/3 #{@employer.active ? "" : "pointer-events-none opacity-50 cursor-not-allowed"} bg-atmosphere hover:bg-deepcove border-2 border-atmosphere text-platinum font-bold px-3 rounded-lg h-10 transition duration-100" %> -
-
-
\ No newline at end of file diff --git a/app/views/employers_old/summary.html.erb b/app/views/employers_old/summary.html.erb deleted file mode 100644 index c6f695d..0000000 --- a/app/views/employers_old/summary.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -
-

New Employer Setup

-

Summary

- <%= form_with model: @form, url: employer_setup_index_path, local: true do |f| %> -
- <%= f.submit "Submit" %> -
- <% end %> -
\ No newline at end of file diff --git a/app/views/id_card/print/index.html.erb b/app/views/id_card/print/index.html.erb index 13d7695..fc5ec59 100644 --- a/app/views/id_card/print/index.html.erb +++ b/app/views/id_card/print/index.html.erb @@ -1,4 +1,14 @@
+
+ <%= link_to dashboard_path, class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Dashboard" %> +
+
+ <% end %> +
ID Card Printer @@ -20,7 +30,7 @@
<%= link_to print_queued_by_employer_id_card_print_path(qu.pl_plan_key), data: { turbo: false }, class: "flex h-7 w-14 transition duration-100" do %> - <%= icon "printer", library: "lucide", class: "h-full w-full text-center text-platinum bg-atmosphere hover:bg-deepcove border-2 border-atmosphere rounded-md p-0.5" %> + <%= icon "printer", library: "lucide", class: "h-full w-full text-center text-platinum hover:text-bronze bg-atmosphere hover:bg-deepcove border-2 border-atmosphere rounded-md p-0.5" %> <% end %>
@@ -49,14 +59,14 @@
- <%= link_to "Print All Queued", print_all_queued_id_card_print_index_path, data: { turbo: false }, class: "flex justify-center items-center w-1/2 h-15 text-platinum bg-cobalt-vivid hover:bg-deepcove border-2 border-cobalt-vivid rounded-lg p-2" %> + <%= link_to "Print All Queued", print_all_queued_id_card_print_index_path, data: { turbo: false }, class: "flex justify-center items-center w-1/2 h-15 text-platinum hover:text-bronze bg-cobalt-vivid hover:bg-deepcove border-2 border-cobalt-vivid rounded-lg p-2" %>
Print ALL Cards for Group
<%= select_tag "employer_select", options_for_select(Employer.all.pluck(:name, :pl_plan_key)), include_blank: "Select Group", data: { action: "change->link-updater#update", link_updater_target: "selector" }, class: "w-full rounded-lg rounded-r-none #{TailwindFormBuilder::SELECT_FIELD_STYLE}" %> - <%= link_to "#", class: 'w-1/4 h-11 bg-cobalt-vivid hover:bg-deepcove border-2 border-cobalt-vivid text-platinum font-bold px-3 rounded-r-lg h-10 transition duration-100', data: { turbo: false, link_updater_target: "link" } do %> - <%= icon "printer", library: "lucide", class: "h-full w-full text-center text-platinum rounded-md p-0.5" %> + <%= link_to "#", class: 'w-1/4 h-11 bg-cobalt-vivid hover:bg-deepcove border-2 border-cobalt-vivid text-platinum hover:text-bronze font-bold px-3 rounded-r-lg h-10 transition duration-100', data: { turbo: false, link_updater_target: "link" } do %> + <%= icon "printer", library: "lucide", class: "h-full w-full text-center rounded-md p-0.5" %> <% end %>
diff --git a/app/views/id_card/setup/_plan_fields.html.erb b/app/views/id_card/setup/_plan_fields.html.erb index 12f90fc..c95d047 100644 --- a/app/views/id_card/setup/_plan_fields.html.erb +++ b/app/views/id_card/setup/_plan_fields.html.erb @@ -1,12 +1,10 @@
<%= plan_fields.text_field :title, label: { text: "Plan Title" }, class: "w-full", data: { add_plan_target: "plan", benefits_template_picker_target: "title" } %>
-<% if plan_fields.object.persisted? %> -
- <%= plan_fields.text_field :pb_product_key, label: { text: "Plan Product Key" }, class: "w-full" %> -
- <%= plan_fields.hidden_field :id %> -<% end %> +
+ <%= plan_fields.text_field :pb_product_key, label: { text: "Plan Product Key" }, class: "w-full pointer-events-none opacity-65 cursor-not-allowed" %> +
+<%= plan_fields.hidden_field :id %> <% unless plan_fields.object.setup.active %>
<%= f.select :template_id, options_from_collection_for_select(@plan_templates, :id, :title), { prompt: "Select Plan Template", class: "w-full" }, { data: { action: "benefits-template-picker#fetchData" }} %> diff --git a/app/views/id_card/setup/field_exceptions.html.erb b/app/views/id_card/setup/field_exceptions.html.erb index 2a30a8f..95fc3f6 100644 --- a/app/views/id_card/setup/field_exceptions.html.erb +++ b/app/views/id_card/setup/field_exceptions.html.erb @@ -1,6 +1,16 @@
+
+ <%= link_to employer_path(@employer.slug), class: "flex items-center h-14 space-x" do %> +
+ <%= icon "arrow-big-left-dash", library: "lucide", class: "h-full w-20 text-center" %> +
+ <%= "Back to Employer" %> +
+
+ <% end %> +
-

ID Card Exceptions:

+

Alternate ID Cards:

(<%= @employer.name %>)

@@ -12,16 +22,22 @@
- <%= exception_fields.select :exception_type, options_for_select(IdCard::FieldException::VALID_TYPES.map { |type| [type.titleize(keep_id_suffix: true), type]}, exc.exception_type), { label: { text: "Exception Based On" }, prompt: "Select Type", class: "w-full" }, data: { add_exception_target: "exception" } %> + <%= exception_fields.select :exception_type, options_for_select(IdCard::FieldException::VALID_TYPES.map { |type| [type.titleize(keep_id_suffix: true), type]}, exc.exception_type), { label: { text: "Alternate ID Card Determined By" }, prompt: "Select Type", class: "w-full" }, data: { add_exception_target: "exception" } %>
- <%= exception_fields.text_field :exception_values, value: exc.exception_values.join(', '), label: { text: "Exception Values" }, class: "w-full" %> + <%= exception_fields.text_field :exception_values, value: exc.exception_values.join(', '), label: { text: "Alternate ID Card Determination Value(s)" }, class: "w-full" %>
-
- Field Exception Items +
+
"> + Alternate ID Card Change Items +
+
">
+
+ (Changes to Employer Default Card) +
+
">
-
<%= exception_fields.fields_for :field_exception_items do |exception_item_fields| %>
@@ -41,7 +57,7 @@
<% end %> - <%= button_tag "Add Another Item To Exception", class: "cursor-pointer bg-NEXT_COLOR hover:bg-deepcove text-xl font-bold text-platinum my-3 py-1 font-semibold leading-tight rounded border-3 border-NEXT_COLOR w-full", data: { action: "add-exception-item#addExemptionItem", add_exception_item_target: "exceptionItemButton" } %> + <%= button_tag "Add Another Alternate ID Card Change Item", class: "cursor-pointer bg-#{IdCard::Setup::FORM_COLORS[index]} hover:bg-deepcove text-xl font-bold text-platinum my-3 py-1 font-semibold leading-tight rounded border-3 border-#{IdCard::Setup::FORM_COLORS[index]} w-full", data: { action: "add-exception-item#addExemptionItem", add_exception_item_target: "exceptionItemButton" } %>