From 602f61fde72757c874edb4d302523dbbb2f1564c Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Sun, 2 Feb 2020 22:24:38 +0100 Subject: [PATCH] Suite --- Gemfile | 12 ++++-- Gemfile.lock | 24 ++++++----- app/helpers/document_line_helper.rb | 3 +- app/mailers/general_mailer.rb | 22 ++++++++-- app/models/kap.rb | 8 +++- app/models/kaps_day.rb | 1 + app/models/kaps_rappel.rb | 43 +++++++++++++++++++ app/models/kaps_rappel_item.rb | 14 ++++++ app/models/kapsme.rb | 4 +- app/views/public/_form.html.haml | 0 app/views/public/kaps/_form.html.haml | 11 +++++ app/views/public/kaps_days/show.html.haml | 7 ++- app/views/public/kaps_rappels/_form.html.haml | 23 ++++++++++ config/schedule.rb | 24 +++++++++-- construction.txt | 1 - .../20200112203005_create_kaps_rappels.rb | 17 ++++++++ ...20200112211919_create_kaps_rappel_items.rb | 13 ++++++ db/schema.rb | 35 ++++++++++++++- test/fixtures/kaps_rappel_items.yml | 15 +++++++ test/fixtures/kaps_rappels.yml | 17 ++++++++ test/models/kaps_rappel_item_test.rb | 7 +++ test/models/kaps_rappel_test.rb | 7 +++ 22 files changed, 282 insertions(+), 26 deletions(-) create mode 100644 app/models/kaps_rappel.rb create mode 100644 app/models/kaps_rappel_item.rb create mode 100644 app/views/public/_form.html.haml create mode 100644 app/views/public/kaps_rappels/_form.html.haml delete mode 100644 construction.txt create mode 100644 db/migrate/20200112203005_create_kaps_rappels.rb create mode 100644 db/migrate/20200112211919_create_kaps_rappel_items.rb create mode 100644 test/fixtures/kaps_rappel_items.yml create mode 100644 test/fixtures/kaps_rappels.yml create mode 100644 test/models/kaps_rappel_item_test.rb create mode 100644 test/models/kaps_rappel_test.rb diff --git a/Gemfile b/Gemfile index 2f39ca8..e6f043a 100644 --- a/Gemfile +++ b/Gemfile @@ -38,8 +38,12 @@ group :development, :test do gem "capistrano", '2.15.9', group: :development, require: false gem "rvm-capistrano",'1.4.1', group: :development - gem 'net-ssh', '~>2.7.0' - + #gem 'net-ssh', '~>2.7.0' + #gem 'net-sftp' + + gem 'net-ssh', '~> 5.1.0' + + #gem 'openssl', '~> 2.0.0.beta.1' gem 'web-console', '~> 2.0' @@ -68,7 +72,7 @@ gem 'gravatar_image_tag' gem 'roo', '~> 2.1.0' gem 'roo-xls' -gem 'curb' +gem 'curb', "0.9.10" gem 'kaminari-bootstrap' @@ -83,7 +87,7 @@ gem "iban-tools" gem "nokogiri" - +gem "houston" gem 'twitter-text' diff --git a/Gemfile.lock b/Gemfile.lock index 8fc02a0..1707ff6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -68,6 +68,8 @@ GEM execjs coffee-script-source (1.9.1) columnize (0.9.0) + commander (4.4.6) + highline (~> 1.7.2) concurrent-ruby (1.1.3) countries (1.2.2) currencies (~> 0.4.2) @@ -76,7 +78,7 @@ GEM countries (~> 1.2.0) sort_alphabetical (~> 1.0) crass (1.0.4) - curb (0.8.8) + curb (0.9.10) currencies (0.4.2) debug_inspector (0.0.2) debugger-linecache (1.2.0) @@ -116,6 +118,9 @@ GEM railties (>= 4.0.1) hashie (3.5.7) highline (1.7.8) + houston (2.4.0) + commander (~> 4.4) + json html2haml (2.0.0) erubis (~> 2.7.0) haml (~> 4.0.0) @@ -161,7 +166,7 @@ GEM net-ssh (>= 2.6.5) net-sftp (2.1.2) net-ssh (>= 2.6.5) - net-ssh (2.7.0) + net-ssh (5.1.0) net-ssh-gateway (1.2.0) net-ssh (>= 2.6.5) nokogiri (1.6.8.1) @@ -187,10 +192,9 @@ GEM xml-simple paypal-sdk-merchant (1.117.2) paypal-sdk-core (~> 0.3.0) - posix-spawn (0.3.11) - pygments.rb (0.6.3) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.2.0) + posix-spawn (0.3.13) + pygments.rb (1.2.1) + multi_json (>= 1.0.0) rack (1.6.11) rack-test (0.6.3) rack (>= 1.0) @@ -314,7 +318,6 @@ GEM wicked_pdf (0.11.0) rails xml-simple (1.1.5) - yajl-ruby (1.2.1) PLATFORMS ruby @@ -328,7 +331,7 @@ DEPENDENCIES carrierwave coffee-rails (~> 4.1.0) country_select - curb + curb (= 0.9.10) fastimage formtastic (= 2.3.0) formtastic-bootstrap @@ -336,12 +339,13 @@ DEPENDENCIES gibbon gravatar_image_tag haml-rails + houston iban-tools jbuilder (~> 2.0) jquery-rails kaminari-bootstrap mysql2 - net-ssh (~> 2.7.0) + net-ssh (~> 5.1.0) nokogiri ogone-rails omniauth-facebook @@ -371,4 +375,4 @@ DEPENDENCIES wicked_pdf BUNDLED WITH - 1.16.2 + 1.17.3 diff --git a/app/helpers/document_line_helper.rb b/app/helpers/document_line_helper.rb index 0e4de6b..731d15a 100644 --- a/app/helpers/document_line_helper.rb +++ b/app/helpers/document_line_helper.rb @@ -21,7 +21,8 @@ module DocumentLineHelper end fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder| - render("admin/"+association.to_s + "/form", :form => builder) + + render(controller.class.parents[0].to_s.downcase+"/"+association.to_s + "/form", :form => builder) end link_to name,"#", :onclick => "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\");return false;" diff --git a/app/mailers/general_mailer.rb b/app/mailers/general_mailer.rb index 3ef7591..c4c125d 100755 --- a/app/mailers/general_mailer.rb +++ b/app/mailers/general_mailer.rb @@ -1,5 +1,5 @@ class GeneralMailer < ActionMailer::Base - default from: "contact@kaps.net" + default from: "hey@kaps.net" add_template_helper(MailHelper) @@ -8,7 +8,7 @@ class GeneralMailer < ActionMailer::Base # # en.question.deliver.subject # - def send_qi_mail(lang_slug, slug, to, options) + def send_qi_mail(lang_slug, slug, to, options={}) @mail_content = MailContent.find_key(LangSite.find_by_slug(lang_slug), slug) @@ -16,7 +16,23 @@ class GeneralMailer < ActionMailer::Base @options = options - mail to: to, :subject => "[KapsMe] "+@mail_content.subject.to_s + if @options[:subject] + subject = @options[:subject] + else + subject = @mail_content.subject.to_s + end + + + mail to: to, :subject => "[KapsMe] "+subject + end + + + def new_send_qi_mail(options = {}) + + mail to: options[:to], :subject => "[KapsMe] "+options[:subject] do |format| + format.html { render :inline => options[:body] } + + end end diff --git a/app/models/kap.rb b/app/models/kap.rb index 628f28f..710561d 100644 --- a/app/models/kap.rb +++ b/app/models/kap.rb @@ -5,7 +5,11 @@ class Kap < ActiveRecord::Base validates :points, :presence => true validates :name, :presence => true validates :kaps_type_id, :presence => true - + + has_many :kaps_rappels + accepts_nested_attributes_for :kaps_rappels, :allow_destroy => true + + validates :start_at, :presence => true @@ -46,4 +50,6 @@ class Kap < ActiveRecord::Base end + + end diff --git a/app/models/kaps_day.rb b/app/models/kaps_day.rb index 41dd28c..19345fe 100644 --- a/app/models/kaps_day.rb +++ b/app/models/kaps_day.rb @@ -2,6 +2,7 @@ class KapsDay < ActiveRecord::Base belongs_to :p_customer has_many :kapsmes + has_many :kaps_rappels, :through => :kapsmes after_save do diff --git a/app/models/kaps_rappel.rb b/app/models/kaps_rappel.rb new file mode 100644 index 0000000..4f87ba6 --- /dev/null +++ b/app/models/kaps_rappel.rb @@ -0,0 +1,43 @@ +class KapsRappel < ActiveRecord::Base + belongs_to :kap + + def self.generate_rappels + puts "AAAAAAHHHH" + + KapsDay.where(:date => Date.today).each do |kd| + kd.kaps_rappels.where("hour <= ?", Time.now.hour).each do |kr| + + kr.generate_rappel(kd,Time.now) + + + end + + end + + end + + def generate_rappel(kaps_day, time) + if kaps_rappel_items = KapsRappelItem.where(:kaps_rappel_id => self.id, :kaps_day_id => kaps_day.id) and count = kaps_rappel_items.count and count < (self.nbr_rep.to_i + 1) + + if kaps_rappel_items.count == 0 or (time > kaps_rappel_items.order("created_at DESC").first.created_at + (self.minutes_rep.to_i >= 1 ? self.minutes_rep.to_i : 15).minutes) + KapsRappelItem.create(:kaps_rappel_id => self.id, :kaps_day_id => kaps_day.id, :kapsme_id => kaps_day.kapsmes.where(:kap_id => self.kap_id).first.id, :number => (count + 1)) + + end + + puts "Un Rappel est lancé" + else + puts "RAPPEL" + puts count + puts "Rappel déjà fait" + + end + + + + end + + + + + +end diff --git a/app/models/kaps_rappel_item.rb b/app/models/kaps_rappel_item.rb new file mode 100644 index 0000000..3bf870b --- /dev/null +++ b/app/models/kaps_rappel_item.rb @@ -0,0 +1,14 @@ +class KapsRappelItem < ActiveRecord::Base + belongs_to :kaps_rappel + belongs_to :kapsme + belongs_to :kaps_day + + + after_create do + puts "BBBBBBBB" + + GeneralMailer.new_send_qi_mail(:to => self.kaps_rappel.kap.p_customer.email, :subject => "Rappel : #{self.kapsme.name}", :body => "Rappel, la tâche \"#{self.kapsme.name}\" n'a pas été cochée aujourd'hui :(").deliver + + + end +end diff --git a/app/models/kapsme.rb b/app/models/kapsme.rb index be616a5..a26446b 100644 --- a/app/models/kapsme.rb +++ b/app/models/kapsme.rb @@ -1,7 +1,9 @@ class Kapsme < ActiveRecord::Base - belongs_to :kaps + belongs_to :kap belongs_to :p_customer + has_many :kaps_rappels, :through => :kap + def kaps_type if self.kaps_type_id == 1 "Journalier" diff --git a/app/views/public/_form.html.haml b/app/views/public/_form.html.haml new file mode 100644 index 0000000..e69de29 diff --git a/app/views/public/kaps/_form.html.haml b/app/views/public/kaps/_form.html.haml index 1f69564..164baf6 100755 --- a/app/views/public/kaps/_form.html.haml +++ b/app/views/public/kaps/_form.html.haml @@ -21,6 +21,17 @@ + + %h3 Contacts de l'adresse : + + + .kaps_rappels_form + =f.semantic_fields_for :kaps_rappels do |form| + =render :partial => "public/kaps_rappels/form", :locals => {:form => form} + + + %p= link_to_add_fields ic(:plus)+" Ajouter un rappel", f, :kaps_rappels + .actions=f.submit "sauvegarder", :class => "btn btn-primary" \ No newline at end of file diff --git a/app/views/public/kaps_days/show.html.haml b/app/views/public/kaps_days/show.html.haml index 521d8e2..299d179 100644 --- a/app/views/public/kaps_days/show.html.haml +++ b/app/views/public/kaps_days/show.html.haml @@ -5,7 +5,12 @@ %p Les Kaps du jours - -@kaps_day.generate_kapsmes + -#@kaps_day.generate_kapsmes + + -KapsRappel.generate_rappels + + + .qi_row .qi_pannel.qi_plain.padding{:style => "position:relative;"} #pourcentage_inner{:style => "position:absolute;top:0;left:0;right:0;"} diff --git a/app/views/public/kaps_rappels/_form.html.haml b/app/views/public/kaps_rappels/_form.html.haml new file mode 100644 index 0000000..aab47b6 --- /dev/null +++ b/app/views/public/kaps_rappels/_form.html.haml @@ -0,0 +1,23 @@ +.kaps_rappel_form.field + + %table{:style => "width:100%;"} + %tr + + %td + = form.hidden_field :rappel_type + %td + = form.input :hour, :label => "Heure du rappel :", :as => :string + + %td + = form.input :nbr_rep, :label => "Nbr répétitions :" + + %td + = form.input :minutes_rep, :label => "Minutes séparant les répétitions :", :as => :string + + %td + = form.input :paused_inc, :label => "Rappel aussi les jours de pause ?" + + + %td{:style => "width:30px;"} + =link_to_remove_fields ic(:"trash-o"), form + \ No newline at end of file diff --git a/config/schedule.rb b/config/schedule.rb index 41d682e..d46bfe0 100644 --- a/config/schedule.rb +++ b/config/schedule.rb @@ -20,10 +20,28 @@ # Learn more: http://github.com/javan/whenever -every 1.minute do +#every 1.minute do +# runner "KapsDay.cron" +#end + +every 2.minute do + runner "KapsRappel.generate_rappels" +end + +every 1.days, at: '0:00 am'do + runner "KapsDay.cron" +end + +every 1.days, at: '1:00 am'do + runner "KapsDay.cron" +end + +every 1.days, at: '2:00 am'do + runner "KapsDay.cron" +end + +every 1.days, at: '3:00 am'do runner "KapsDay.cron" end - -#every 1.days, at: '0:00 am'do \ No newline at end of file diff --git a/construction.txt b/construction.txt deleted file mode 100644 index 466f4f4..0000000 --- a/construction.txt +++ /dev/null @@ -1 +0,0 @@ -

Cette page est en construction

Notre nouveau site vient juste d'être mis en ligne, nous faisons tout pour le compléter au plus vite.

\ No newline at end of file diff --git a/db/migrate/20200112203005_create_kaps_rappels.rb b/db/migrate/20200112203005_create_kaps_rappels.rb new file mode 100644 index 0000000..8dc60ca --- /dev/null +++ b/db/migrate/20200112203005_create_kaps_rappels.rb @@ -0,0 +1,17 @@ +class CreateKapsRappels < ActiveRecord::Migration + def change + create_table :kaps_rappels do |t| + t.string :name + t.integer :hour, :default => 18 + t.integer :day + t.string :rappel_type, :default => "day" + t.boolean :paused_inc, :default => false + t.references :kap, index: true, foreign_key: true + t.integer :nbr_rep + t.integer :minutes_rep + + + t.timestamps null: false + end + end +end diff --git a/db/migrate/20200112211919_create_kaps_rappel_items.rb b/db/migrate/20200112211919_create_kaps_rappel_items.rb new file mode 100644 index 0000000..35de0be --- /dev/null +++ b/db/migrate/20200112211919_create_kaps_rappel_items.rb @@ -0,0 +1,13 @@ +class CreateKapsRappelItems < ActiveRecord::Migration + def change + create_table :kaps_rappel_items do |t| + t.references :kaps_rappel, index: true, foreign_key: true + t.integer :number + t.references :kapsme, index: true, foreign_key: true + t.references :kaps_day, index: true, foreign_key: true + t.datetime :generate_at + + t.timestamps null: false + end + end +end diff --git a/db/schema.rb b/db/schema.rb index d6f2304..15d6441 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20200112130214) do +ActiveRecord::Schema.define(version: 20200112211919) do create_table "admin_admin_roles", force: :cascade do |t| t.integer "admin_id", limit: 4 @@ -480,6 +480,35 @@ ActiveRecord::Schema.define(version: 20200112130214) do add_index "kaps_days", ["p_customer_id"], name: "index_kaps_days_on_p_customer_id", using: :btree + create_table "kaps_rappel_items", force: :cascade do |t| + t.integer "kaps_rappel_id", limit: 4 + t.integer "number", limit: 4 + t.integer "kapsme_id", limit: 4 + t.integer "kaps_day_id", limit: 4 + t.datetime "generate_at" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "kaps_rappel_items", ["kaps_day_id"], name: "index_kaps_rappel_items_on_kaps_day_id", using: :btree + add_index "kaps_rappel_items", ["kaps_rappel_id"], name: "index_kaps_rappel_items_on_kaps_rappel_id", using: :btree + add_index "kaps_rappel_items", ["kapsme_id"], name: "index_kaps_rappel_items_on_kapsme_id", using: :btree + + create_table "kaps_rappels", force: :cascade do |t| + t.string "name", limit: 255 + t.integer "hour", limit: 4, default: 18 + t.integer "day", limit: 4 + t.string "rappel_type", limit: 255, default: "day" + t.boolean "paused_inc", default: false + t.integer "kap_id", limit: 4 + t.integer "nbr_rep", limit: 4 + t.integer "minutes_rep", limit: 4 + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + + add_index "kaps_rappels", ["kap_id"], name: "index_kaps_rappels_on_kap_id", using: :btree + create_table "kapsmes", force: :cascade do |t| t.string "name", limit: 255 t.text "description", limit: 65535 @@ -1628,6 +1657,10 @@ ActiveRecord::Schema.define(version: 20200112130214) do add_foreign_key "home_slider_slides", "home_sliders" add_foreign_key "kaps", "p_customers" add_foreign_key "kaps_days", "p_customers" + add_foreign_key "kaps_rappel_items", "kaps_days" + add_foreign_key "kaps_rappel_items", "kaps_rappels" + add_foreign_key "kaps_rappel_items", "kapsmes" + add_foreign_key "kaps_rappels", "kaps" add_foreign_key "kapsmes", "kaps" add_foreign_key "kapsmes", "p_customers" add_foreign_key "lang_pages", "lang_sites" diff --git a/test/fixtures/kaps_rappel_items.yml b/test/fixtures/kaps_rappel_items.yml new file mode 100644 index 0000000..84de405 --- /dev/null +++ b/test/fixtures/kaps_rappel_items.yml @@ -0,0 +1,15 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + kaps_rappel_id: + number: 1 + kapsme_id: + kaps_day_id: + generate_at: 2020-01-12 22:19:19 + +two: + kaps_rappel_id: + number: 1 + kapsme_id: + kaps_day_id: + generate_at: 2020-01-12 22:19:19 diff --git a/test/fixtures/kaps_rappels.yml b/test/fixtures/kaps_rappels.yml new file mode 100644 index 0000000..fb1a814 --- /dev/null +++ b/test/fixtures/kaps_rappels.yml @@ -0,0 +1,17 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + name: MyString + hour: 1 + day: 1 + type: + paused_inc: false + kap_id: + +two: + name: MyString + hour: 1 + day: 1 + type: + paused_inc: false + kap_id: diff --git a/test/models/kaps_rappel_item_test.rb b/test/models/kaps_rappel_item_test.rb new file mode 100644 index 0000000..d94eb21 --- /dev/null +++ b/test/models/kaps_rappel_item_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class KapsRappelItemTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/models/kaps_rappel_test.rb b/test/models/kaps_rappel_test.rb new file mode 100644 index 0000000..ad74303 --- /dev/null +++ b/test/models/kaps_rappel_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class KapsRappelTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end