47 lines
1.1 KiB
Elixir
47 lines
1.1 KiB
Elixir
|
defmodule Shift73kWeb.ShiftLive.DeleteComponent do
|
||
|
use Shift73kWeb, :live_component
|
||
|
|
||
|
alias Shift73k.Shifts
|
||
|
|
||
|
@impl true
|
||
|
def update(assigns, socket) do
|
||
|
socket
|
||
|
|> assign(assigns)
|
||
|
|> live_okreply()
|
||
|
end
|
||
|
|
||
|
@impl true
|
||
|
def handle_event("confirm", %{"id" => id, "subject" => subject, "datetime" => datetime}, socket) do
|
||
|
shift = Shifts.get_shift(id)
|
||
|
|
||
|
if (shift) do
|
||
|
shift
|
||
|
|> Shifts.delete_shift()
|
||
|
|> case do
|
||
|
{:ok, _} ->
|
||
|
flash = {:info, "Shift deleted successfully: \"#{subject}\""}
|
||
|
send(self(), {:put_flash_message, flash})
|
||
|
|
||
|
socket
|
||
|
|> push_event("modal-please-hide", %{})
|
||
|
|> live_noreply()
|
||
|
|
||
|
{:error, _} ->
|
||
|
handle_error(socket, subject, datetime)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
defp handle_error(socket, subject, datetime) do
|
||
|
flash =
|
||
|
{:error,
|
||
|
"Some error trying to delete shift \"#{subject} (#{datetime})\". Possibly already deleted? Reloading list..."}
|
||
|
|
||
|
send(self(), {:put_flash_message, flash})
|
||
|
|
||
|
socket
|
||
|
|> push_event("modal-please-hide", %{})
|
||
|
|> live_noreply()
|
||
|
end
|
||
|
end
|