top of page

Není to místo na mapě, je to stav mysli.

Kde ticho léčí a příroda určuje tempo

Nedaleko od Prahy, skrytý mezi lesy, loukami a rybníky. Jen příroda a klid. Původní statek a historický mlýn, citlivě zrekonstruované, s moderní zázemím. Pro nás nejkrásnější místo na zemi.


Komfortní ubytování i pro více než 100 osob. Pro vaše setkávání s kamarády, nezapomenutelnou svatbu, retreat, jógový víkend nebo firemní event. Místo, kde zvolníte a ožijí vzpomínky na dětství. Kousek od reality, ale světelné roky od stresu.

3_VIT08077.jpg
2_VIT07972_2.jpg
1_VIT08085.jpg
4_HOJ_VIT_0913.jpg

Statek

Původní kamenné zdi, koupací jezírko přímo pod okny a atmosféra rodinného sídla. Kompletně zrekonstruovaná venkovská usedlost s ubytováním pro více než 50 osob.

Více o statku

Mlýn

Mlýn ze 17. století s moderním zázemím až pro 42 osob. Nově zrekonstruovaný objekt s důrazem na prostor, světlo a multifunkčnost.

Prozkoumat mlýn
5_1final druhý.jpg

Naplánujme Váš pobyt

Recenze

Jsme parta 10 rodin, která 8 let hledala místo, kam bychom se mohli vracet, kde by byly nadšené děti i dospělí - což je ve skoro 40 lidech opravdu trošku oříšek. Projeli jsme skoro celou ČR a po 8 letech jsme to místo našli - na Samotě Hojšín. Absolutně neskutečné místo…

Nicola R.

průměrné hodnocení je 5 z 5

Krásné, čisté, důmyslně řešené a skvěle vybavené ubytování uprostřed nádherné přírody. Venkovní i vnitřní prostor je skvěle připravený pro děti, takže není třeba mít obavy, že se jim někde něco přihodí. A ani obráceně :)

Ivan H.

průměrné hodnocení je 5 z 5

Útulný společný prostor, klid, obklopeni přírodou jsme si zde užili pár dnů klidu, samotu jsme měli sami pro sebe a to bylo absolutní pecka! Jezděte mimo hlavní víkendy a hlavní sezónu, stojí to za to!!!

Dana P.

průměrné hodnocení je 5 z 5

Samota Hojšín je krásné místo uprostřed přírody. Celý objekt působí moderně, otevřeným dojmem a je vidět, že každý detail je promyšlený. Velkou předností je také spousta možností zábavy pro děti, a to uvnitř i venku.

Ondřej K.

průměrné hodnocení je 5 z 5

Naprostý klenot, který stojí za samostatný výlet. Zachráněné stavení s moderními prvky. Úžasný areál s bio jezírkem a nádherou kam oko dosáhne. K tomu úžasní majitelé a pozitivní energie na rozdávání. Ideální pro teambuildingy, svatby, nebo prostě jen tak.

David R.

průměrné hodnocení je 5 z 5

Naše svatba tady byla naprosto nádherná. Místo má svoje kouzlo. Prostory jsou upravené, fotogenické a mají skvělou atmosféru. Pokud hledáte krásné, klidné a stylové místo na svatbu, určitě doporučujeme!

Kristýna Š.

průměrné hodnocení je 5 z 5
bottom of page
import { badRequest, ok, serverError } from 'wix-http-functions'; import { contacts, triggeredEmails } from 'wix-crm-backend'; const RECIPIENT_EMAIL = 'samota@hojsin.cz'; const TRIGGERED_EMAIL_ID = 'samota_inquiry_notification'; const JSON_HEADERS = { 'Content-Type': 'application/json' }; const LABELS = { cs: { dateType: { fixed: 'fixní', flexible: 'jsme flexibilní' }, eventType: { dovolena: 'dovolená', firma: 'firma', retreat: 'retreat', svatba: 'svatba' }, place: { 'bez-preference': 'Bez preference', 'cela-samota': 'Celá Samota', mlyn: 'Mlýn', statek: 'Statek' } }, en: { dateType: { fixed: 'fixed', flexible: 'we are flexible' }, eventType: { dovolena: 'holiday', firma: 'company event', retreat: 'retreat', svatba: 'wedding' }, place: { 'bez-preference': 'No preference', 'cela-samota': 'Entire Samota', mlyn: 'Mill', statek: 'Farmhouse' } } }; export async function post_samotaInquiry(request) { try { const body = await request.body.json(); const inquiry = normalizeInquiry(body); const errors = validateInquiry(inquiry); if (errors.length) { return badRequest(jsonResponse({ errors, message: 'Invalid inquiry payload.', ok: false })); } if (inquiry.payload.company) { return ok(jsonResponse({ ok: true, skipped: true, submissionId: inquiry.submissionId })); } const contactId = await getRecipientContactId(); const variables = buildEmailVariables(inquiry); await triggeredEmails.emailContact(TRIGGERED_EMAIL_ID, contactId, { variables }); return ok(jsonResponse({ ok: true, submissionId: inquiry.submissionId })); } catch (error) { console.error('Samota inquiry email failed', error); return serverError(jsonResponse({ message: 'Inquiry email could not be sent.', ok: false })); } } function jsonResponse(body) { return { body, headers: JSON_HEADERS }; } async function getRecipientContactId() { const resolvedContact = await contacts.appendOrCreateContact({ emails: [ { email: RECIPIENT_EMAIL } ], name: { first: 'Samota', last: 'Hojšín' } }); if (!resolvedContact || !resolvedContact.contactId) { throw new Error('Recipient contact could not be resolved.'); } return resolvedContact.contactId; } function normalizeInquiry(body) { const payload = body && body.payload ? body.payload : {}; return { language: body && body.language === 'en' ? 'en' : 'cs', pageUrl: cleanString(body && body.pageUrl, 1000), submissionId: cleanString(body && body.submissionId, 120) || createSubmissionId(), payload: { company: cleanString(payload.company, 200), dateType: cleanString(payload.dateType, 80), email: cleanString(payload.email, 254).toLowerCase(), endDate: cleanString(payload.endDate, 20), eventType: cleanString(payload.eventType, 80), guests: cleanString(payload.guests, 20), name: cleanString(payload.name, 160), newsletterConsent: Boolean(payload.newsletterConsent), note: cleanString(payload.note, 3000), place: cleanString(payload.place, 80), privacyConsent: Boolean(payload.privacyConsent), startDate: cleanString(payload.startDate, 20) } }; } function validateInquiry(inquiry) { const payload = inquiry.payload; const errors = []; [ 'guests', 'startDate', 'endDate', 'dateType', 'place', 'eventType', 'name', 'email' ].forEach(function (field) { if (!payload[field]) { errors.push(field); } }); if (!payload.privacyConsent) { errors.push('privacyConsent'); } if (payload.email && !isValidEmail(payload.email)) { errors.push('email'); } if (!isValidDate(payload.startDate)) { errors.push('startDate'); } if (!isValidDate(payload.endDate)) { errors.push('endDate'); } if (isValidDate(payload.startDate) && isValidDate(payload.endDate) && payload.endDate <= payload.startDate) { errors.push('dateOrder'); } return errors; } function buildEmailVariables(inquiry) { const language = inquiry.language; const payload = inquiry.payload; const dateType = getLabel(language, 'dateType', payload.dateType); const eventType = getLabel(language, 'eventType', payload.eventType); const place = getLabel(language, 'place', payload.place); const submittedAt = formatDateTime(new Date()); const summary = [ 'Nová poptávka z webu Samota Hojšín', '', 'Odesláno: ' + submittedAt, 'Jazyk: ' + language.toUpperCase(), 'Stránka: ' + inquiry.pageUrl, 'ID: ' + inquiry.submissionId, '', 'Kolik vás bude: do ' + payload.guests, 'Termín: ' + payload.startDate + ' - ' + payload.endDate, 'Typ termínu: ' + dateType, 'Místo ubytování: ' + place, 'Druh akce: ' + eventType, '', 'Jméno: ' + payload.name, 'E-mail: ' + payload.email, '', 'Poznámka:', payload.note || '-', '', 'Souhlas se zpracováním osobních údajů: ' + formatBoolean(payload.privacyConsent), 'Souhlas s novinkami: ' + formatBoolean(payload.newsletterConsent) ].join('\n'); return { dateRange: payload.startDate + ' - ' + payload.endDate, dateType, email: payload.email, eventType, guests: 'do ' + payload.guests, language, name: payload.name, newsletterConsent: formatBoolean(payload.newsletterConsent), note: payload.note || '-', pageUrl: inquiry.pageUrl, place, privacyConsent: formatBoolean(payload.privacyConsent), submissionId: inquiry.submissionId, submittedAt, summary }; } function getLabel(language, group, value) { const dictionary = LABELS[language] || LABELS.cs; return dictionary[group] && dictionary[group][value] ? dictionary[group][value] : value; } function cleanString(value, maxLength) { return String(value || '').trim().slice(0, maxLength); } function isValidEmail(value) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(String(value || '').trim()); } function isValidDate(value) { return /^\d{4}-\d{2}-\d{2}$/.test(String(value || '')); } function formatBoolean(value) { return value ? 'Ano' : 'Ne'; } function formatDateTime(date) { return date.toLocaleString('cs-CZ', { day: '2-digit', hour: '2-digit', minute: '2-digit', month: '2-digit', second: '2-digit', timeZone: 'Europe/Prague', year: 'numeric' }); } function createSubmissionId() { return 'samota-' + Date.now() + '-' + Math.random().toString(36).slice(2, 10); }