create full module in the project

 1 give command model -

rails g model FeeConcession fee_concession_id:string fee_concession_name:string valid_until:datetime fee_concession_amount:decimal mode:string 

2 create route.rb -

  namespace :bx_block_academic_account do

    resources :academic_account

  end

3 create controller -

module BxBlockAcademicClass

  class AcademicClassesController < ApplicationController

    before_action :current_user

    before_action :set_academic_class, only: [:update,:show, :destroy]


    def index

      academic_classes = AcademicClass.order("created_at DESC").paginate(page: params[:page], per_page: 10)

      if academic_classes.present?

        render json: AcademicClassSerializer.new(academic_classes, meta: {total_pages: academic_classes.total_pages, message: "Academic class lists"}).serializable_hash, status: :ok

      else

        render json: {message:"No records."}, status: :ok

      end

    end

    

    def create

      return render json: {errors: [{message: "Please select academic year"}]}, status: :unprocessable_entity if !params[:academic_class].present? || !params[:academic_class][:academic_year_id].present?

      academic_class = BxBlockAcademicClass::AcademicClass.new(academic_class_params)

      if academic_class.save

        render json: AcademicClassSerializer.new(academic_class, meta: {message: "Academic Class successfully Created."}).serializable_hash, status: :created

      else

        render json: {errors: format_activerecord_errors(academic_class.errors)}, status: :unprocessable_entity

      end

    end


    def update

      if @academic_class.update(academic_class_params)

        render json: AcademicClassSerializer.new(@academic_class, meta: {message: "Academic Class successfully Updated."}).serializable_hash, status: :created

      else

        render json: {errors: format_activerecord_errors(@academic_class.errors)}, status: :unprocessable_entity

      end 

    end


    def show

      render json: AcademicClassSerializer.new(@academic_class, meta: {message: "AcademicClass Details."}).serializable_hash, status: :created

    end


    def destroy

      @academic_class.destroy

      render json: {message:"Academic Class was successfully destroyed."}, status: :ok

    end


    def yearly_classes

      @academic_year =  BxBlockAcademicYear::AcademicYear.find_by(id: params[:academic_year_id])

      return render json: {message:"Academic year not found"}, :status => :not_found unless @academic_year.present?

      academic_classes = @academic_year.academic_classes.order("created_at DESC").paginate(page: params[:page], per_page: 10)

      return render json: {message:"No classes for this year"}, :status => :not_found unless academic_classes.present?

      render json: AcademicClassSerializer.new(academic_classes, meta: {total_pages: academic_classes.total_pages, message: "Academic class lists"}).serializable_hash, status: :ok

    end


    private


    def set_academic_class

      @academic_class =  AcademicClass.find_by(id: params[:id])

      render json: {message:"Academic Class not found"}, :status => :not_found unless @academic_class.present?

    end


    def academic_class_params

      params.require(:academic_class).permit(:name, :academic_year_id)

    end

  end

end


4 create application controller - 

module BxBlockAcademicClass
  class ApplicationController < BuilderBase::ApplicationController
    include BuilderJsonWebToken::JsonWebTokenValidation

    before_action :validate_json_web_token
    rescue_from ActiveRecord::RecordNotFound, :with => :not_found

    private

    def not_found
      render :json => {'errors' => ['Record not found']}, :status => :not_found
    end

    def format_activerecord_errors(errors)
      result = []
      errors.each do |attribute, error|
        result << { attribute => error }
      end
      result
    end
  end
end

5  

Comments

Popular posts from this blog

Rails 7 Features :: Comparison with Rails 6 and Rails 5