feat: daily activity summary email
- activity-email-actions: sendDailySummaryAction — filters today's activities by dueDate, sends personalized email via Appwrite Messaging - 'me': current user's activities only - 'team' (owner/admin): each member gets their own activities separately - send-summary-dialog: dialog with me/team radio (owner/admin only sees team option), inline error + toast on success - activities-client: 'Günlük Özet' button in header, role prop added - activities page: passes ctx.role to client
This commit is contained in:
@@ -19,9 +19,11 @@ import {
|
||||
} from "@/lib/appwrite/activity-actions";
|
||||
import { ActivityFormSheet } from "./activity-form-sheet";
|
||||
import { ActivityCalendar } from "./activity-calendar";
|
||||
import { SendSummaryDialog } from "./send-summary-dialog";
|
||||
import { DeleteConfirmDialog } from "@/components/ui/delete-confirm-dialog";
|
||||
import type { Activity, Customer, Property } from "@/lib/appwrite/schema";
|
||||
import { ACTIVITY_TYPE_LABELS } from "@/lib/appwrite/schema";
|
||||
import type { TenantRole } from "@/lib/appwrite/tenant-guard";
|
||||
|
||||
type ViewMode = "list" | "calendar";
|
||||
|
||||
@@ -29,12 +31,14 @@ interface ActivitiesClientProps {
|
||||
initialActivities: Activity[];
|
||||
customers: Customer[];
|
||||
properties: Property[];
|
||||
role: TenantRole;
|
||||
}
|
||||
|
||||
export function ActivitiesClient({
|
||||
initialActivities,
|
||||
customers,
|
||||
properties,
|
||||
role,
|
||||
}: ActivitiesClientProps) {
|
||||
const router = useRouter();
|
||||
const [activities, setActivities] = useState(initialActivities);
|
||||
@@ -123,6 +127,7 @@ export function ActivitiesClient({
|
||||
Takvim
|
||||
</button>
|
||||
</div>
|
||||
<SendSummaryDialog role={role} />
|
||||
<Button onClick={openCreate} size="sm" data-tour="activities-add">
|
||||
<Plus className="mr-1.5 size-4" />
|
||||
Yeni Aktivite
|
||||
|
||||
Reference in New Issue
Block a user