This repository has been archived on 2026-07-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
PointStar b1f8e3e50b feat(attachments): "save attachments only" ribbon action
New workflow alongside "תייק ל-Klear": save just the attachments of a
mail to a Case in EspoCRM (no Email entity created), with an optional
DocumentFolder.

Core:
- AttachmentEntity, DocumentEntity, DocumentFolder DTOs
- IEspoCrmClient gets three new endpoints:
    UploadAttachmentAsync (POST /Attachment, data-URI base64, role=Attachment)
    CreateDocumentAsync   (POST /Document, fileId + parent + folderId)
    ListDocumentFoldersAsync (GET /DocumentFolder, returns envelope)
- AttachmentSaveService orchestrates per-attachment upload + Document
  create, short-circuits on EspoCrmAuthorizationException, aggregates
  per-file Saved/Failed/AuthRequired outcomes into AttachmentSaveSummary

UI:
- SaveAttachmentsDialog (RTL, card layout matching FileToCaseDialog):
  Case search + folder dropdown + per-attachment checkbox list
- SaveAttachmentsViewModel: debounced GlobalSearch filtered to Case,
  optional folder selector (with a "(no folder)" sentinel row),
  Attachments collection of AttachmentRowViewModel rows
- AttachmentRowViewModel: IsSelected checkbox + display name + size
  computed from base64 length

Host:
- AddInHost.LaunchSaveAttachmentsAsync(MailItem) — extracts on the STA
  via MailItemExtractor, fetches folders, shows the dialog (anchored to
  Outlook via AttachOwnerToOutlook), runs AttachmentSaveService on OK,
  reports a Hebrew MessageBox summary
- AttachmentSaveService field on AddInHost + dispose hook

Ribbon:
- New "שמור קבצים" button in the Marcus-Law group, between Klear and
  פרטי תיק. Enabled only when exactly one MailItem is selected and it
  has at least one attachment
- klear-attach.png paperclip icon (32x32, blue rounded square),
  embedded as a resource and resolved by the existing OnGetImage
  callback (new case in the switch)

Tests: 39 still passing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 20:12:46 +03:00

OutlookAddin — תוסף EspoCRM ל-Outlook Desktop

תוסף VSTO/COM ל-Outlook ל-Windows שמאפשר לעו"ד לתייק מיילים ל-EspoCRM ישירות מ-Outlook, בלי הגדרת BCC.

פיצ'רים

  1. תיוק מייל קיים לתיק/לקוח — Ribbon button "File to EspoCRM" עם דיאלוג חיפוש (Case/Contact/Lead/Account).
  2. חיפוש לקוח/תיק על מייל נכנס — Reading-pane sidebar שמזהה את השולח ומציג את התיקים הקיימים.
  3. כתיבת מייל חדש מתוך תיק — מ-Outlook (Ribbon ב-compose) או מ-EspoCRM (URL protocol outlookaddin://compose?caseId=...).
  4. סנכרון אוטומטי של תיקיות נבחרות — Auto-file למיילים שמגיעים לתיקיות שמוגדרות לניטור.

דרישות

  • Windows 10/11
  • Outlook desktop: Microsoft 365 / Office 2021 / Office 2019 (לא 2016)
  • .NET Framework 4.8 (מובנה ב-Win10/11)
  • API key ב-EspoCRM (מקבלים מאדמין)

התקנה

ClickOnce — לחץ על הלינק https://platform.dev.marcus-law.co.il/outlook-addin/setup.exe ועקוב אחר ההוראות. Outlook יעלה מחדש אוטומטית.

ארכיטקטורה

  • Server-side: MailRouter v1.2.0 חושף POST /api/v1/MailRouter/file.
  • Client-side: ה-Add-in מדבר עם MailRouter (file) + EspoCRM REST API (search/lookup).
  • Auth: Espo-Authorization: <base64(username:apiKey)> per-user.

מבנה ה-Solution: ראה docs/ARCHITECTURE.md.

פיתוח

# ב-Windows machine עם VS 2022 + VSTO workload
git clone https://gitea.dev.marcus-law.co.il/espocrm-extensions/OutlookAddin.git
cd OutlookAddin
nuget restore
msbuild /t:Build /p:Configuration=Debug
# F5 ב-VS מפעיל Outlook עם ה-Add-in טעון לדיבאג

CI build על Windows runner ב-Gitea Actions — ראה .gitea/workflows/build.yml.

רישיון

Internal use only — Marcus-Law.

S
Description
Archived from gitea.marcus1.com
Readme 1.9 MiB
Languages
C# 99.2%
PowerShell 0.4%
Dockerfile 0.4%