namespace obb::mycityhall { namespace { std::vector s_dossiers; Step next_step(Step s) { switch (s) { case Step::kDraft: return Step::kDeliberation; case Step::kDeliberation: return Step::kVote; case Step::kVote: return Step::kPublication; case Step::kPublication: return Step::kArchived; case Step::kArchived: return Step::kArchived; } return Step::kArchived; } } void workflow_init() { s_dossiers.clear(); } void push_dossier(const Dossier &dossier) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == dossier.id; }); if (it == s_dossiers.end()) { s_dossiers.push_back(dossier); } else { *it = dossier; } } void advance_step(const std::string &id) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == id; }); if (it == s_dossiers.end()) { return; } "> namespace obb::mycityhall { namespace { std::vector s_dossiers; Step next_step(Step s) { switch (s) { case Step::kDraft: return Step::kDeliberation; case Step::kDeliberation: return Step::kVote; case Step::kVote: return Step::kPublication; case Step::kPublication: return Step::kArchived; case Step::kArchived: return Step::kArchived; } return Step::kArchived; } } void workflow_init() { s_dossiers.clear(); } void push_dossier(const Dossier &dossier) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == dossier.id; }); if (it == s_dossiers.end()) { s_dossiers.push_back(dossier); } else { *it = dossier; } } void advance_step(const std::string &id) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == id; }); if (it == s_dossiers.end()) { return; } "> namespace obb::mycityhall { namespace { std::vector s_dossiers; Step next_step(Step s) { switch (s) { case Step::kDraft: return Step::kDeliberation; case Step::kDeliberation: return Step::kVote; case Step::kVote: return Step::kPublication; case Step::kPublication: return Step::kArchived; case Step::kArchived: return Step::kArchived; } return Step::kArchived; } } void workflow_init() { s_dossiers.clear(); } void push_dossier(const Dossier &dossier) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == dossier.id; }); if (it == s_dossiers.end()) { s_dossiers.push_back(dossier); } else { *it = dossier; } } void advance_step(const std::string &id) { auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) { return d.id == id; }); if (it == s_dossiers.end()) { return; } ">
#include "app/ui/mycityhall/obb_mch_workflow.h"

#include <algorithm>

namespace obb::mycityhall {

namespace {
std::vector<Dossier> s_dossiers;
Step next_step(Step s) {
  switch (s) {
    case Step::kDraft: return Step::kDeliberation;
    case Step::kDeliberation: return Step::kVote;
    case Step::kVote: return Step::kPublication;
    case Step::kPublication: return Step::kArchived;
    case Step::kArchived: return Step::kArchived;
  }
  return Step::kArchived;
}
}

void workflow_init() {
  s_dossiers.clear();
}

void push_dossier(const Dossier &dossier) {
  auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) {
    return [d.id](<http://d.id>) == [dossier.id](<http://dossier.id>);
  });
  if (it == s_dossiers.end()) {
    s_dossiers.push_back(dossier);
  } else {
    *it = dossier;
  }
}

void advance_step(const std::string &id) {
  auto it = std::find_if(s_dossiers.begin(), s_dossiers.end(), [&](const Dossier &d) {
    return [d.id](<http://d.id>) == id;
  });
  if (it == s_dossiers.end()) {
    return;
  }
  it->step = next_step(it->step);
}

std::vector<Dossier> list_active() {
  std::vector<Dossier> out;
  for (const auto &d : s_dossiers) {
    if (d.step == Step::kArchived) continue;
    out.push_back(d);
  }
  return out;
}

}  // namespace obb::mycityhall