From 1acffbe36018a8f14c9eeed0bdae0789688ce079 Mon Sep 17 00:00:00 2001
From: Kerdo Kurs <kerdokurs@gmail.com>
Date: Wed, 13 Nov 2024 16:36:19 +0200
Subject: [PATCH] add implementation for profile page #46

---
 .../controllers/profile_controller.ex         | 19 ++++++++++++++++++
 .../controllers/profile_html.ex               |  5 +++++
 .../controllers/profile_html/index.html.heex  | 20 +++++++++++++++++++
 lib/proptrackr_web/router.ex                  |  4 +++-
 4 files changed, 47 insertions(+), 1 deletion(-)
 create mode 100644 lib/proptrackr_web/controllers/profile_controller.ex
 create mode 100644 lib/proptrackr_web/controllers/profile_html.ex
 create mode 100644 lib/proptrackr_web/controllers/profile_html/index.html.heex

diff --git a/lib/proptrackr_web/controllers/profile_controller.ex b/lib/proptrackr_web/controllers/profile_controller.ex
new file mode 100644
index 0000000..73d1c19
--- /dev/null
+++ b/lib/proptrackr_web/controllers/profile_controller.ex
@@ -0,0 +1,19 @@
+defmodule PropTrackrWeb.ProfileController do
+  use PropTrackrWeb, :controller
+
+  import PropTrackr.Authentication
+  alias PropTrackr.Repo
+  alias PropTrackr.Accounts.User
+
+  def index(conn, _params) do
+    user_id = get_session(conn, :user_id)
+    if user_id == nil do
+      conn
+      |> put_flash(:error, "You are not logged!")
+      |> redirect(to: ~p"/login")
+    else
+      user = Repo.get(User, user_id)
+      render(conn, "index.html", user: user)
+    end
+  end
+end
diff --git a/lib/proptrackr_web/controllers/profile_html.ex b/lib/proptrackr_web/controllers/profile_html.ex
new file mode 100644
index 0000000..63f3ea9
--- /dev/null
+++ b/lib/proptrackr_web/controllers/profile_html.ex
@@ -0,0 +1,5 @@
+defmodule PropTrackrWeb.ProfileHTML do
+  use PropTrackrWeb, :html
+
+  embed_templates "profile_html/*"
+end
diff --git a/lib/proptrackr_web/controllers/profile_html/index.html.heex b/lib/proptrackr_web/controllers/profile_html/index.html.heex
new file mode 100644
index 0000000..81d464a
--- /dev/null
+++ b/lib/proptrackr_web/controllers/profile_html/index.html.heex
@@ -0,0 +1,20 @@
+<.header>
+  Your profile
+  <:actions>
+    <.link href={~p"/me/details"}>
+      <.button>Edit details</.button>
+    </.link>
+    <.link href={~p"/me/delete"}>
+      <.button class="bg-red-700 hover:bg-red-500">Delete account</.button>
+    </.link>
+  </:actions>
+</.header>
+
+<p class="italic"><%= @user.name %> <%= @user.surname %></p>
+
+<p><span class="bold">First name:</span> <%= @user.name %></p>
+<p><span class="bold">Last name:</span> <%= @user.surname %></p>
+<p><span class="bold">Birth date:</span> <%= @user.birth_date %></p>
+<p><span class="bold">Phone number:</span> <%= @user.phone_number %></p>
+<p><span class="bold">Email:</span> <%= @user.email %></p>
+<p><span class="bold">Bio:</span> <%= @user.bio %></p>
diff --git a/lib/proptrackr_web/router.ex b/lib/proptrackr_web/router.ex
index 353a880..8ac12cd 100644
--- a/lib/proptrackr_web/router.ex
+++ b/lib/proptrackr_web/router.ex
@@ -23,8 +23,10 @@ defmodule PropTrackrWeb.Router do
     resources "/register", RegisterController, only: [:index, :create]
     resources "/login", LoginController, only: [:index, :create]
     resources "/logout", LogoutController
+
+    resources "/me", ProfileController, only: [:index]
+    resources "/me/details", UpdateController, only: [:index, :create]
     resources "/me/password", PasswordController, only: [:index, :create]
-    resources "/me/details", UpdateController
   end
 
   # Other scopes may use custom stacks.
-- 
GitLab