# frozen_string_literal: true

# default values for settings
unless Setting.find_by(name: 'about_body').try(:value)
  setting = Setting.find_or_initialize_by(name: 'about_body')
  setting.value = <<~HTML
    <p>
      <a href="http://fab-manager.com" target="_blank">Fab-manager</a> est outil de gestion des atelier de fabrication
      numérique, permettant de réserver des machines de découpe, des imprimantes 3D, etc. tout en gérant simplement
      les aspect financier, comptable et statistiques de votre espace.
    </p>
    <p>
      <a href="http://fab-manager.com" target="_blank">Fab-manager</a> est un projet libre : ouvert à tous, il offre la
      possibilité de contribuer soi-même au code, de télécharger le logiciel, de l'étudier et de le redistribuer. Vous
      n'êtes pas technicien ? Vous pouvez quand même participer à <a href="https://translate.fab-manager.com/">traduire
      Fab-manager dans votre langue</a>.
    </p>
    <p>
      Fab-manager favorise le partage de connaissances grâce au réseau OpenLab : les projets que vous documentez sont
      partagés avec l'ensemble du réseau des Fab-managers.
    </p>
  HTML
  setting.save
end

Setting.set('about_title', 'Imaginer, Fabriquer, <br>Partager avec Fab-manager') unless Setting.find_by(name: 'about_title').try(:value)

unless Setting.find_by(name: 'about_contacts').try(:value)
  setting = Setting.find_or_initialize_by(name: 'about_contacts')
  setting.value = <<~HTML
    <dl>
    <dt>Support technique :</dt>
    <dd><a href="https://forum.fab-manager.com">Forum</a></dd>
    <dd><a href="https://feedback.fab-manager.com">Feedback</a></dd>
    <dd><a href="https://github.com/sleede/fab-manager/">GitHub</a></dd>
    </dl>
    <br><br>
    <p><a href='http://fab-manager.com'>Visitez le site de Fab-manager</a></p>
  HTML
  setting.save
end

Setting.set('twitter_name', 'Fab_Manager') unless Setting.find_by(name: 'twitter_name').try(:value)

unless Setting.find_by(name: 'machine_explications_alert').try(:value)
  setting = Setting.find_or_initialize_by(name: 'machine_explications_alert')
  setting.value = 'Tout achat de créneau machine est définitif. Aucune ' \
                  'annulation ne pourra être effectuée, néanmoins au plus tard 24h avant le créneau fixé, vous pouvez en ' \
                  "modifier la date et l'horaire à votre convenance et en fonction du calendrier proposé. Passé ce délais, " \
                  'aucun changement ne pourra être effectué.'
  setting.save
end

unless Setting.find_by(name: 'training_explications_alert').try(:value)
  setting = Setting.find_or_initialize_by(name: 'training_explications_alert')
  setting.value = 'Toute réservation de formation est définitive. ' \
                  'Aucune annulation ne pourra être effectuée, néanmoins au plus tard 24h avant le créneau fixé, vous pouvez ' \
                  "en modifier la date et l'horaire à votre convenance et en fonction du calendrier proposé. Passé ce délais, " \
                  'aucun changement ne pourra être effectué.'
  setting.save
end

unless Setting.find_by(name: 'subscription_explications_alert').try(:value)
  setting = Setting.find_or_initialize_by(name: 'subscription_explications_alert')
  setting.value = <<~HTML
    <p><b>Règle sur la date de début des abonnements</b></p>
    <ul>
    <li><span style=\"font-size: 1.6rem; line-height: 2.4rem;\">Si vous êtes un nouvel utilisateur - i.e aucune
    formation d'enregistrée sur le site - votre abonnement débutera à la date de réservation de votre première
    formation.</span></li>
    <li><span style="font-size: 1.6rem; line-height: 2.4rem;">Si vous avez déjà une formation ou plus de validée,
    votre abonnement débutera à la date de votre achat d'abonnement.</span></li>
    </ul>
    <p>Merci de bien prendre ses informations en compte, et merci de votre compréhension. L'équipe du Fab Lab.<br>
    </p>
  HTML
  setting.save
end

unless Setting.find_by(name: 'invoice_logo').try(:value)
  setting = Setting.find_or_initialize_by(name: 'invoice_logo')
  setting.value = <<~BASE64
[encoded data, 33267 characters]
  BASE64
  setting.save
end

Setting.set('invoice_reference', 'YYMMmmmX[/VL]R[/A]S[/E]') unless Setting.find_by(name: 'invoice_reference').try(:value)

Setting.set('invoice_code-active', true) unless Setting.find_by(name: 'invoice_code-active').try(:value)

Setting.set('invoice_code-value', 'FABMGRFABLAB') unless Setting.find_by(name: 'invoice_code-value').try(:value)

Setting.set('invoice_order-nb', 'nnnnnn-MM-YY') unless Setting.find_by(name: 'invoice_order-nb').try(:value)

Setting.set('invoice_VAT-active', false) unless Setting.find_by(name: 'invoice_VAT-active').try(:value)

Setting.set('invoice_VAT-rate', 20.0) unless Setting.find_by(name: 'invoice_VAT-rate').try(:value)

Setting.set('invoice_text', I18n.t('invoices.invoice_text_example')) unless Setting.find_by(name: 'invoice_text').try(:value)

unless Setting.find_by(name: 'invoice_legals').try(:value)
  setting = Setting.find_or_initialize_by(name: 'invoice_legals')
  setting.value = 'Fab-manager<br/>' \
                  '41 rue du Colonel Moutarde, 21000 DIJON France<br/>' \
                  'Tél. : +33 1 23 45 67 98<br/>' \
                  'Fax. : +33 1 23 45 67 98<br/>' \
                  'SIRET : 237 082 474 00006 - APE 913 E'
  setting.save
end

Setting.set('booking_window_start', '1970-01-01 08:00:00') unless Setting.find_by(name: 'booking_window_start').try(:value)

Setting.set('booking_window_end', '1970-01-01 23:59:59') unless Setting.find_by(name: 'booking_window_end').try(:value)

Setting.set('booking_move_enable', true) unless Setting.find_by(name: 'booking_move_enable').try(:value)

Setting.set('booking_move_delay', 24) unless Setting.find_by(name: 'booking_move_delay').try(:value)

Setting.set('booking_cancel_enable', false) unless Setting.find_by(name: 'booking_cancel_enable').try(:value)

Setting.set('booking_cancel_delay', 24) unless Setting.find_by(name: 'booking_cancel_delay').try(:value)

Setting.set('main_color', '#cb1117') unless Setting.find_by(name: 'main_color').try(:value)

Setting.set('secondary_color', '#ffdd00') unless Setting.find_by(name: 'secondary_color').try(:value)

unless Setting.find_by(name: 'training_information_message').try(:value)
  setting = Setting.find_or_initialize_by(name: 'training_information_message')
  setting.value = "Avant de réserver une formation, nous vous conseillons de consulter nos offres d'abonnement qui " \
                  'proposent des conditions avantageuses sur le prix des formations et les créneaux machines.'
  setting.save
end

Setting.set('fablab_name', 'Fab-manager') unless Setting.find_by(name: 'fablab_name').try(:value)

Setting.set('name_genre', 'male') unless Setting.find_by(name: 'name_genre').try(:value)

Setting.set('reminder_enable', true) unless Setting.find_by(name: 'reminder_enable').try(:value)

Setting.set('reminder_delay', 24) unless Setting.find_by(name: 'reminder_delay').try(:value)

Setting.set('visibility_yearly', 3) unless Setting.find_by(name: 'visibility_yearly').try(:value)

Setting.set('visibility_others', 1) unless Setting.find_by(name: 'visibility_others').try(:value)

reservation_deadline = Setting.get('reservation_deadline') || 0

Setting.set('machine_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'machine_reservation_deadline').try(:value)

Setting.set('training_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'training_reservation_deadline').try(:value)

Setting.set('event_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'event_reservation_deadline').try(:value)

Setting.set('space_reservation_deadline', reservation_deadline) unless Setting.find_by(name: 'space_reservation_deadline').try(:value)

Setting.set('display_name_enable', false) unless Setting.find_by(name: 'display_name_enable').try(:value)

Setting.set('machines_sort_by', 'default') unless Setting.find_by(name: 'machines_sort_by').try(:value)

unless Setting.find_by(name: 'privacy_draft').try(:value)
  setting = Setting.find_or_initialize_by(name: 'privacy_draft')
  setting.value = <<~HTML
    <p>La présente politique de confidentialité définit et vous informe de la manière dont _________ utilise et protège les
    informations que vous nous transmettez, le cas échéant, lorsque vous utilisez le présent site accessible à partir de l’URL suivante :
    _________ (ci-après le « Site »).</p><p>Veuillez noter que cette politique de confidentialité est susceptible d’être modifiée ou
    complétée à tout moment par _________, notamment en vue de se conformer à toute évolution législative, réglementaire, jurisprudentielle
    ou technologique. Dans un tel cas, la date de sa mise à jour sera clairement identifiée en tête de la présente politique et l'Utilisateur
    sera informé par courriel. Ces modifications engagent l’Utilisateur dès leur mise en ligne. Il convient par conséquent que l’Utilisateur
    consulte régulièrement la présente politique de confidentialité et d’utilisation des cookies afin de prendre connaissance de ses
    éventuelles modifications.</p><h3>I. DONNÉES PERSONNELLES</h3><p>D’une manière générale, il vous est possible de visiter le site de
    _________ sans communiquer aucune information personnelle vous concernant. En toute hypothèse, vous n’êtes en aucune manière obligé de
    transmettre ces informations à _________.</p><p>Néanmoins, en cas de refus, il se peut que vous ne puissiez pas bénéficier de
    certaines informations ou services que vous avez demandés. À ce titre en effet, _________ peut être amené dans certains cas à vous
    demander de renseigner votre nom, prénom, pseudonyme, sexe, adresse mail, numéro de téléphone, entreprise et date de naissance (ci-après
    vos « Informations Personnelles »). En fournissant ces informations, vous acceptez expressément qu’elles soient traitées par
    _________, aux fins indiquées au point 2 ci-dessous.</p><p>Conformément au Règlement Général sur la Protection des Données (General
    Data Protection Regulation) adopté par le Parlement européen le 14 avril 2016, et à la Loi Informatique et Libertés du 6 janvier 1978
    modifiée, _________ vous informe des points suivants :</p><h4>1. Identité du responsable du traitement</h4><p>Le responsable du
    traitement est (la société/l'association) _________ – (adresse) _________, (code postal) _________ (ville)&nbsp;_________ – (Pays)
    _________ .</p><h4>2. Finalités du traitement</h4><p>_________ est susceptible de traiter vos Informations Personnelles :</p><p>(a)
    aux fins de vous fournir les informations ou les services que vous avez demandés (notamment : l'envoi de notifications relatives à
    vos activités sur le Site, l’envoi de la Newsletter, la correspondance par email, l’envoi d’informations commerciales, livres
    blancs ou encore l’évaluation de votre niveau de satisfaction quant aux services proposés) ;</p><p>(b) aux fins de recueillir des
    informations nous permettant d’améliorer notre Site, nos produits et services (notamment par le biais de cookies) ;</p><p>(c)
    aux fins de pouvoir vous contacter à propos de différents événements relatifs à _________, incluant notamment la mise à jour des
    produits et le support client.</p><h4>3. Destinataires</h4><p>Seul _________ est destinataire de vos Informations Personnelles.
    Celles-ci, que ce soit sous forme individuelle ou agrégée, ne sont jamais transmises à un tiers, nonobstant les sous-traitants
    auxquels _________ fait appel (vous trouverez de plus amples informations à leur sujet au point 7 ci-dessous). Ni _________,
    ni l’un quelconque de ses sous-traitants, ne procèdent à la commercialisation des données personnelles des visiteurs et Utilisateurs de
    son Site.</p><h4>4. Durée de conservation</h4><p>Vos Informations Personnelles sont conservées par _________ uniquement pour le temps
    correspondant à la finalité de la collecte tel qu’indiqué en 2 ci-dessus qui ne saurait en tout état de cause excéder 36 mois.</p><h4>5.
    Droits Informatique et Libertés</h4><p>Vous disposez des droits suivants concernant vos Informations Personnelles, que vous pouvez exercer
    en nous écrivant à l’adresse postale mentionnée au point 1 ou en contactant le délégué à la protection des données, dont l'adresse est
    mentionnée ci-contre.</p><p><b>o Droit d’accès et de communication des données</b></p><p>Vous avez la faculté d’accéder aux Informations
    Personnelles qui vous concernent.</p><p>Cependant, en raison de l’obligation de sécurité et de confidentialité dans le traitement des
    données à caractère personnel qui incombe à _________, vous êtes informé que votre demande sera traitée sous réserve que vous apportiez la
    preuve de votre identité, notamment par la production d’un scan de votre titre d’identité valide (en cas de demande par voie électronique)
    ou d’une photocopie signée de votre titre d’identité valide (en cas de demande adressée par écrit).</p><p>_________ vous informe qu’il
    sera en droit, le cas échéant, de s’opposer aux demandes manifestement abusives (de par leur nombre, leur caractère répétitif ou
    systématique).</p><p>Pour vous aider dans votre démarche, notamment si vous désirez exercer votre droit d’accès par le biais d’une
    demande écrite à l’adresse postale mentionnée au point 1, vous trouverez en cliquant sur le <a
    href="https://www.cnil.fr/fr/modele/courrier/exercer-son-droit-dacces">lien</a> suivant un modèle de courrier élaboré par la Commission
    Nationale de l’Informatique et des Libertés (la « CNIL »).</p><p><b>o Droit de rectification des données</b></p><p>Au titre de ce droit,
    la législation vous habilite à demander la rectification, la mise à jour, le verrouillage ou encore l’effacement des données vous
    concernant qui peuvent s’avérer le cas échéant inexactes, erronées, incomplètes ou obsolètes.</p><p>Egalement, vous pouvez définir des
    directives générales et particulières relatives au sort des données à caractère personnel après votre décès. Le cas échéant, les héritiers
    d’une personne décédée peuvent exiger de prendre en considération le décès de leur proche et/ou de procéder aux mises à jour nécessaires.
    </p><p>Pour vous aider dans votre démarche, notamment si vous désirez exercer, pour votre propre compte ou pour le compte de l’un de vos
    proches défunt, votre droit de rectification par le biais d’une demande écrite à l’adresse postale mentionnée au point 1, vous trouverez
    en cliquant sur le <a href="https://www.cnil.fr/fr/modele/courrier/rectifier-des-donnees-inexactes-obsoletes-ou-perimees">lien</a>
    suivant un modèle de courrier élaboré par la CNIL.</p><p><b>o Droit d’opposition</b></p><p>L’exercice de ce droit n’est possible que dans
    l’une des deux situations suivantes :</p><p>Lorsque l’exercice de ce droit est fondé sur des motifs légitimes ; ou</p><p>Lorsque
    l’exercice de ce droit vise à faire obstacle à ce que les données recueillies soient utilisées à des fins de prospection commerciale.</p>
    <p>Pour vous aider dans votre démarche, notamment si vous désirez exercer votre droit d’opposition par le biais d’une demande écrite
    adressée à l’adresse postale indiquée au point 1, vous trouverez en cliquant sur le <a
    href="https://www.cnil.fr/fr/modele/courrier/supprimer-des-informations-vous-concernant-dun-site-internet">lien</a> suivant un modèle de
    courrier élaboré par la CNIL.</p><h4>6. Délais de réponse</h4><p> _________ s’engage à répondre à votre demande d’accès, de rectification
    ou d’opposition ou toute autre demande complémentaire d’informations dans un délai raisonnable qui ne saurait dépasser 1 mois à compter
    de la réception de votre demande.</p><h4>7. Prestataires habilités et transfert vers un pays tiers de l’Union Européenne</h4><p>_________
    vous informe qu’il a recours à ses prestataires habilités pour faciliter le recueil et le traitement des données que vous nous avez
    communiquées. Ces prestataires peuvent être situés en dehors de l’Union Européenne et ont communication des données recueillies par le
    biais des divers formulaires présents sur le Site.</p><p>_________ s’est préalablement assuré de la mise en œuvre par ses prestataires de
    garanties adéquates et du respect de conditions strictes en matière de confidentialité, d’usage et de protection des données. Tout
    particulièrement, la vigilance s’est portée sur l’existence d’un fondement légal pour effectuer un quelconque transfert de données vers un
    pays tiers. A ce titre, l’un de nos prestataires est soumis à (nom de la règle) _________ approuvées par la (nom de l'autorité) _________
    en (année d'approbation)&nbsp;_________.</p><h4>8. Plainte auprès de l’autorité compétente</h4><p>Si vous considérez que _________ ne
    respecte pas ses obligations au regard de vos Informations Personnelles, vous pouvez adresser une plainte ou une demande auprès de
    l’autorité compétente. En France, l’autorité compétente est la CNIL à laquelle vous pouvez adresser une demande par voie électronique en
    cliquant sur le lien suivant : <a href="https://www.cnil.fr/fr/plaintes/internet">https://www.cnil.fr/fr/plaintes/internet</a>.</p>
    <h3>II. POLITIQUE RELATIVE AUX COOKIES</h3><p>Lors de votre première connexion sur le site web de _________, vous êtes avertis par un
    bandeau en bas de votre écran que des informations relatives à votre navigation sont susceptibles d’être enregistrées dans des fichiers
    dénommés « cookies ». Notre politique d’utilisation des cookies vous permet de mieux comprendre les dispositions que nous mettons en œuvre
    en matière de navigation sur notre site web. Elle vous informe notamment sur l’ensemble des cookies présents sur notre site web, leur
    finalité (partie I.) et vous donne la marche à suivre pour les paramétrer (partie II.)</p><h4>1. Informations générales sur les cookies
    présents sur le site de _________</h4><p>_________, en tant qu’éditeur du présent site web, pourra procéder à l’implantation d’un cookie
    sur le disque dur de votre terminal (ordinateur, tablette, mobile etc.) afin de vous garantir une navigation fluide et optimale sur notre
    site Internet.</p><p>Les « cookies » (ou témoins de connexion) sont des petits fichiers texte de taille limitée qui nous permettent de
    reconnaître votre ordinateur, votre tablette ou votre mobile aux fins de personnaliser les services que nous vous proposons.</p><p>Les
    informations recueillies par le biais des cookies ne permettent en aucune manière de vous identifier nominativement. Elles sont utilisées
    exclusivement pour nos besoins propres afin d’améliorer l’interactivité et la performance de notre site web et de vous adresser des
    contenus adaptés à vos centres d’intérêts. Aucune de ces informations ne fait l’objet d’une communication auprès de tiers sauf lorsque
    _________ a obtenu au préalable votre consentement ou bien lorsque la divulgation de ces informations est requise par la loi, sur ordre
    d’un tribunal ou toute autorité administrative ou judiciaire habilitée à en connaître.</p><p>Pour mieux vous éclairer sur les informations
    que les cookies identifient, vous trouverez ci-dessous un tableau listant les différents types de cookies susceptibles d’être utilisés sur
    le site web de _________, leur nom, leur finalité ainsi que leur durée de conservation.</p><h4>2. Configuration de vos préférences sur les
    cookies</h4><p>Vous pouvez accepter ou refuser le dépôt de cookies à tout moment.</p><p>Lors de votre première connexion sur le site web
    de _________, une bannière présentant brièvement des informations relatives au dépôt de cookies et de technologies similaires apparaît en
    bas de votre écran. Cette bannière vous demande de choisir explicitement d'accepter ou non le dépôt de cookies sur votre terminal.
    </p><p>Après avoir fait votre choix, vous pouvez le modifier ultérieurement&nbsp; en vous connectant à votre compte utilisateur puis en
    naviguant dans la section intitulée « mes paramètres&nbsp;», accessible via un clic sur votre nom, en haut à droite de l'écran.</p>
    <p>Selon le type de cookie en cause, le recueil de votre consentement au dépôt et à la lecture de cookies sur votre terminal peut être
    impératif.</p><h4>a. Les cookies exemptés de consentement</h4><p>Conformément aux recommandations de la Commission Nationale de
    l’Informatique et des Libertés (CNIL), certains cookies sont dispensés du recueil préalable de votre consentement dans la mesure où ils
    sont strictement nécessaires au fonctionnement du site internet ou ont pour finalité exclusive de permettre ou faciliter la communication
    par voie électronique. Il s’agit des cookies suivants :</p><p><b>o Identifiant de session</b> et&nbsp;<b>d'authentification</b> sur l'API de
    Fab-manager.</p><p><b>o Identifiant de panier d'achat</b></b>, permettant de sauvegarder le contenu de votre panier d'achat, même lorsque
    vous n'êtes pas connecté.</p>
    <p><em>Les cookies ci-dessus sont intégralement soumis à la présente politique dans la mesure où ils sont émis et gérés par _________.</em></p>
    <p><b>o Stripe</b>, permettant de gérer les paiements par carte bancaire et dont la politique de confidentialité est accessible sur ce
    <a href="https://stripe.com/fr/privacy">lien</a>.</p><p><b>o Disqus</b>, permettant de poster des commentaires sur les fiches projet et
    dont la politique de confidentialité est accessible sur ce <a href="https://help.disqus.com/articles/1717103-disqus-privacy-policy">lien
    </a>.</p><h4>b. Les cookies nécessitant le recueil préalable de votre consentement</h4><p>Cette
    exigence concerne les cookies émis par des tiers et qui sont qualifiés de « persistants » dans la mesure où ils demeurent dans votre
    terminal jusqu’à leur effacement ou leur date d’expiration.</p><p>De tels cookies étant émis par des tiers, leur utilisation et leur dépôt
    sont soumis à leurs propres politiques de confidentialité dont vous trouverez un lien ci-dessous. Cette famille de cookie comprend les
    cookies de mesure d’audience (Google Analytics).</p><p>Les cookies de mesure d’audience établissent des statistiques concernant la
    fréquentation et l’utilisation de divers éléments du site web (comme les contenus/pages que vous avez visité).
    Ces données participent à l’amélioration de l’ergonomie du site web de _________. Un outil de mesure d’audience est utilisé sur le
    présent site internet :</p><p><b>o Google Analytics</b> pour gérer les statistiques de visites dont la politique de
    confidentialité est disponible (uniquement en anglais) à partir du <a href="https://policies.google.com/privacy?hl=fr&amp;gl=ZZ">lien
    </a> suivant. </p><h4>c. Vous disposez de divers outils de paramétrage des cookies</h4><p>La plupart
    des navigateurs Internet sont configurés par défaut de façon à ce que le dépôt de cookies soit autorisé. Votre navigateur vous offre
    l’opportunité de modifier ces paramètres standards de manière que l’ensemble des cookies soit rejeté systématiquement ou bien à ce
    qu’une partie seulement des cookies soit acceptée ou refusée en fonction de leur émetteur.</p><p><b>ATTENTION</b> : Nous attirons votre
    attention sur le fait que le refus du dépôt de cookies sur votre terminal est néanmoins susceptible d’altérer votre expérience
    d’utilisateur ainsi que votre accès à certains services ou fonctionnalités du présent site web. Le cas échéant, _________ décline toute
    responsabilité concernant les conséquences liées à la dégradation de vos conditions de navigation qui interviennent en raison de votre
    choix de refuser, supprimer ou bloquer les cookies nécessaires au fonctionnement du site.
    Ces conséquences ne sauraient constituer un dommage et vous ne pourrez prétendre à aucune indemnité de ce fait.</p>
    <p>Votre navigateur vous permet également de supprimer les cookies existants sur votre
    terminal ou encore de vous signaler lorsque de nouveaux cookies sont susceptibles d’être déposés sur votre terminal. Ces paramètres n’ont
    pas d’incidence sur votre navigation, mais vous font perdre tout le bénéfice apporté par le cookie.</p><p>Veuillez ci-dessous prendre
    connaissance des multiples outils mis à votre disposition afin que vous puissiez paramétrer les cookies déposés sur votre terminal.</p>
    <h4>d. Le paramétrage de votre navigateur Internet</h4><p>Chaque navigateur Internet propose ses propres paramètres de gestion des
    cookies. Pour savoir de quelle manière modifier vos préférences en matière de cookies, vous trouverez ci-dessous les liens vers l’aide
    nécessaire pour accéder au menu de votre navigateur prévu à cet effet :</p>
    <ul>
      <li><a href="https://support.google.com/chrome/answer/95647?hl=fr">Chrome</a></li>
      <li><a href="https://mzl.la/3BX2oBb">Firefox</a></li>
      <li><a href="https://support.microsoft.com/fr-fr/microsoft-edge/supprimer-les-cookies-dans-microsoft-edge-63947406-40ac-c3b8-57b9-2a946a29ae09">
      Microsoft Edge</a></li>
      <li><a href="https://help.opera.com/en/latest/web-preferences/#cookies">Opera</a></li>
      <li><a href="https://support.apple.com/fr-fr/HT201265">Safari</a></li>
    </ul>
    <p>Pour de plus amples informations concernant les outils de maîtrise des cookies, vous pouvez consulter le
    <a href="https://www.cnil.fr/fr/cookies-et-autres-traceurs/comment-se-proteger/maitriser-votre-navigateur">site internet</a> de la CNIL.</p>
  HTML
  setting.save
end

Setting.set('fab_analytics', true) unless Setting.find_by(name: 'fab_analytics').try(:value)

unless Setting.find_by(name: 'link_name').try(:value)
  include ApplicationHelper # rubocop:disable Style/MixinUsage

  name = Setting.get('fablab_name')
  gender = Setting.get('name_genre')
  setting = Setting.find_or_initialize_by(name: 'link_name')
  setting.value = _t('app.public.common.about_the_fablab', NAME: name, GENDER: gender)
  setting.save
end

unless Setting.find_by(name: 'home_content').try(:value)
  setting = Setting.find_or_initialize_by(name: 'home_content')
  setting.value = <<~HTML
    <div>
      <div class="m-sm">
        <div id="news">#{I18n.t('app.admin.settings.item_news')}</div>
      </div>
      <div class="row wrapper">
        <div class="col-lg-8">
          <div id="projects">#{I18n.t('app.admin.settings.item_projects')}</div>
        </div>
        <div class="col-lg-4 m-t-lg">
          <div id="twitter">#{I18n.t('app.admin.settings.item_twitter')}</div>
          <div id="members">#{I18n.t('app.admin.settings.item_members')}</div>
        </div>
      </div>
      <div class="row wrapper m-t-sm">
        <div class="col-lg-12">
          <div id="events">#{I18n.t('app.admin.settings.item_events')}</div>
        </div>
      </div>
    </div>
  HTML
  setting.save
end

Setting.set('slot_duration', 60) unless Setting.find_by(name: 'slot_duration').try(:value)

Setting.set('spaces_module', false) unless Setting.find_by(name: 'spaces_module').try(:value)

Setting.set('plans_module', true) unless Setting.find_by(name: 'plans_module').try(:value)

Setting.set('invoicing_module', true) unless Setting.find_by(name: 'invoicing_module').try(:value)

Setting.set('feature_tour_display', 'once') unless Setting.find_by(name: 'feature_tour_display').try(:value)

Setting.set('email_from', 'noreply@fab-manager.com') unless Setting.find_by(name: 'email_from').try(:value)

Setting.set('online_payment_module', false) unless Setting.find_by(name: 'online_payment_module').try(:value)

Setting.set('openlab_default', true) unless Setting.find_by(name: 'openlab_default').try(:value)

unless Setting.find_by(name: 'allowed_cad_extensions').try(:value)
  Setting.set(
    'allowed_cad_extensions',
    'pdf ai eps cad math svg stl dxf dwg obj step iges igs 3dm 3dmf doc docx png ino scad fcad skp sldprt sldasm slddrw' \
    'slddrt tex latex ps fcstd fcstd1'
  )
end

unless Setting.find_by(name: 'allowed_cad_mime_types').try(:value)
  Setting.set(
    'allowed_cad_mime_types',
    'application/pdf application/postscript application/illustrator image/x-eps image/svg+xml application/sla application/dxf ' \
    'application/acad application/dwg application/octet-stream application/step application/iges model/iges x-world/x-3dmf ' \
    'application/vnd.openxmlformats-officedocument.wordprocessingml.document image/png text/x-arduino text/plain application/scad ' \
    'application/vnd.sketchup.skp application/x-koan application/vnd-koan koan/x-skm application/vnd.koan application/x-tex ' \
    'application/x-latex application/x-extension-fcstd'
  )
end

Setting.set('stripe_currency', 'EUR') unless Setting.find_by(name: 'stripe_currency').try(:value)

Setting.set('invoice_prefix', 'FabManager_invoice') unless Setting.find_by(name: 'invoice_prefix').try(:value)

Setting.set('payment_schedule_prefix', 'FabManager_paymentSchedule') unless Setting.find_by(name: 'payment_schedule_prefix').try(:value)

Setting.set('confirmation_required', false) unless Setting.find_by(name: 'confirmation_required').try(:value)

Setting.set('user_validation_required', false) unless Setting.find_by(name: 'user_validation_required').try(:value)

Setting.set('user_validation_required_list', '') unless Setting.find_by(name: 'user_validation_required_list').try(:value)

Setting.set('wallet_module', true) unless Setting.find_by(name: 'wallet_module').try(:value)

Setting.set('statistics_module', true) unless Setting.find_by(name: 'statistics_module').try(:value)

Setting.set('machines_module', true) unless Setting.find_by(name: 'machines_module').try(:value)

Setting.set('upcoming_events_shown', 'until_start') unless Setting.find_by(name: 'upcoming_events_shown').try(:value)

Setting.set('trainings_module', true) unless Setting.find_by(name: 'trainings_module').try(:value)

Setting.set('public_agenda_module', true) unless Setting.find_by(name: 'public_agenda_module').try(:value)

Setting.set('renew_pack_threshold', 0.2) unless Setting.find_by(name: 'renew_pack_threshold').try(:value)

Setting.set('pack_only_for_subscription', true) unless Setting.find_by(name: 'pack_only_for_subscription').try(:value)

Setting.set('public_registrations', true) unless Setting.find_by(name: 'public_registrations').try(:value)

Setting.set('user_change_group', true) unless Setting.find_by(name: 'user_change_group').try(:value)

Setting.set('invoice_VAT-name', I18n.t('invoices.VAT')) unless Setting.find_by(name: 'invoice_VAT-name').try(:value)

unless Setting.find_by(name: 'overlapping_categories').try(:value)
  Setting.set('overlapping_categories', 'training_reservations,machine_reservations,space_reservations,events_reservations')
end

Setting.set('extended_prices_in_same_day', false) unless Setting.find_by(name: 'extended_prices_in_same_day').try(:value)

Setting.set('show_username_in_admin_list', false) unless Setting.find_by(name: 'show_username_in_admin_list').try(:value)

Setting.set('store_module', false) unless Setting.find_by(name: 'store_module').try(:value)

Setting.set('store_hidden', true) unless Setting.find_by(name: 'store_hidden').try(:value)

Setting.set('advanced_accounting', false) unless Setting.find_by(name: 'advanced_accounting').try(:value)

Setting.set('accounting_sales_journal_code', 'SALES') unless Setting.find_by(name: 'accounting_sales_journal_code').try(:value)
Setting.set('accounting_payment_card_code', '5801') unless Setting.find_by(name: 'accounting_payment_card_code').try(:value)
Setting.set('accounting_payment_card_label', 'Cards payments') unless Setting.find_by(name: 'accounting_payment_card_label').try(:value)
Setting.set('accounting_payment_card_journal_code', 'CA01') unless Setting.find_by(name: 'accounting_payment_card_journal_code').try(:value)
Setting.set('accounting_payment_wallet_code', '5802') unless Setting.find_by(name: 'accounting_payment_wallet_code').try(:value)
Setting.set('accounting_payment_wallet_label', 'Wallet payments') unless Setting.find_by(name: 'accounting_payment_wallet_label').try(:value)
Setting.set('accounting_payment_wallet_journal_code', 'WA01') unless Setting.find_by(name: 'accounting_payment_wallet_journal_code').try(:value)
Setting.set('accounting_payment_other_code', '5803') unless Setting.find_by(name: 'accounting_payment_other_code').try(:value)
Setting.set('accounting_payment_other_label', 'Payments on site') unless Setting.find_by(name: 'accounting_payment_other_label').try(:value)
Setting.set('accounting_payment_other_journal_code', 'SI01') unless Setting.find_by(name: 'accounting_payment_other_journal_code').try(:value)
Setting.set('accounting_wallet_code', '4191') unless Setting.find_by(name: 'accounting_wallet_code').try(:value)
Setting.set('accounting_wallet_label', 'Wallet credit') unless Setting.find_by(name: 'accounting_wallet_label').try(:value)
Setting.set('accounting_wallet_journal_code', 'WC01') unless Setting.find_by(name: 'accounting_wallet_journal_code').try(:value)
Setting.set('accounting_VAT_code', '4457') unless Setting.find_by(name: 'accounting_VAT_code').try(:value)
Setting.set('accounting_VAT_label', 'Collected VAT') unless Setting.find_by(name: 'accounting_VAT_label').try(:value)
Setting.set('accounting_VAT_journal_code', 'VAT1') unless Setting.find_by(name: 'accounting_VAT_journal_code').try(:value)
Setting.set('accounting_subscription_code', '7061') unless Setting.find_by(name: 'accounting_subscription_code').try(:value)
Setting.set('accounting_subscription_label', 'Subscriptions') unless Setting.find_by(name: 'accounting_subscription_label').try(:value)
Setting.set('accounting_Machine_code', '7602') unless Setting.find_by(name: 'accounting_Machine_code').try(:value)
Setting.set('accounting_Machine_label', 'Machines reservations') unless Setting.find_by(name: 'accounting_Machine_label').try(:value)
Setting.set('accounting_Training_code', '7063') unless Setting.find_by(name: 'accounting_Training_code').try(:value)
Setting.set('accounting_Training_label', 'Trainings reservations') unless Setting.find_by(name: 'accounting_Training_label').try(:value)
Setting.set('accounting_Event_code', '7064') unless Setting.find_by(name: 'accounting_Event_code').try(:value)
Setting.set('accounting_Event_label', 'Events reservations') unless Setting.find_by(name: 'accounting_Event_label').try(:value)
Setting.set('accounting_Space_code', '7065') unless Setting.find_by(name: 'accounting_Space_code').try(:value)
Setting.set('accounting_Space_label', 'Spaces reservations') unless Setting.find_by(name: 'accounting_Space_label').try(:value)
Setting.set('accounting_Pack_code', '7066') unless Setting.find_by(name: 'accounting_Pack_code').try(:value)
Setting.set('accounting_Pack_label', 'Prepaid-packs selling') unless Setting.find_by(name: 'accounting_Pack_label').try(:value)
Setting.set('accounting_Product_code', '7071') unless Setting.find_by(name: 'accounting_Product_code').try(:value)
Setting.set('accounting_Product_label', 'Merchandise selling') unless Setting.find_by(name: 'accounting_Product_label').try(:value)
Setting.set('accounting_Error_code', 'ERROR') unless Setting.find_by(name: 'accounting_Error_code').try(:value)
Setting.set('accounting_Error_label', 'Erroneous invoices to refund') unless Setting.find_by(name: 'accounting_Error_label').try(:value)

Setting.set('external_id', false) unless Setting.find_by(name: 'external_id').try(:value)

Setting.set('projects_list_member_filter_presence', false) unless Setting.find_by(name: 'projects_list_member_filter_presence')
Setting.set('projects_list_date_filters_presence', false) unless Setting.find_by(name: 'projects_list_date_filters_presence')
Setting.set('project_categories_filter_placeholder', 'Toutes les catégories') unless Setting.find_by(name: 'project_categories_filter_placeholder').try(:value)
Setting.set('project_categories_wording', 'Catégories') unless Setting.find_by(name: 'project_categories_wording').try(:value)

Setting.set('reservation_context_feature', false) unless Setting.find_by(name: 'reservation_context_feature')

Setting.set('family_account', false) unless Setting.find_by(name: 'family_account').try(:value)
Setting.set('child_validation_required', false) unless Setting.find_by(name: 'child_validation_required').try(:value)
