PDA

View Full Version : سوال در مورد ارسال پیام بین اعضا



sg.programmer
دوشنبه 31 شهریور 1393, 20:08 عصر
سلام
س) برای ارسال پیام بین کاربران --- --> بهترین روش برای ارسال یک نامه بین چند کاربر چی هست؟

۱) آیا برای هر کدوم یک نامه مجزا ارسال بشه؟ تکرار نامه ها

۲) یا باید فیلدی طراحی شود و گیرندگان نامه در آن قرار گیرند؟ (فیلد چند مقداری) ----> اگه این روش توضییح بدید چطور ؟

تشکر

fakhravari
سه شنبه 01 مهر 1393, 11:24 صبح
http://barnamenevis.org/showthread.php?334127

sg.programmer
چهارشنبه 02 مهر 1393, 16:10 عصر
این در مورد ایمیل هست که سوال من این نبود.
من خودم دارم صندوق پستی تعریف می کنم و بین اعضا گروه خودشون پیام ارسال میکنن

aminmousavi
چهارشنبه 02 مهر 1393, 17:35 عصر
سلام دوست عزیز .
دقیق تعریف نکردید که چه قابلیت هایی میخواید داشته باشه . مثلا میخواین فقط ارسال بشه برای کاربران ؟ یا میخوای جدول ارسال شده ها هم برای کسی که پیغامی رو ارسال میکنه داشته باشی ؟

با توجه به اینکه سوالتون ارسال پیام بین کاربران بوده ، فرض میگیریم برای ارسال شونده نمیخواید پیغام ذخیره شه . در این حالت پیشنهاد میکنم روش دوم رو برید ، چون برای هرکاربر بفرستید با توجه به اینکه احتمالا نوع فیلد متن شما Text ، Nvarchar(MAX) هست ، زیاد بهینه نمیشه !
جدول هم میتونین به این شکل پیاده سازی کنید :

جدول سرآیند پیام :
- int id
- int idUsers
- nvarchar Title
- nvarchar Body
- datecreated
- time created
(idUsers بیانگر این هست که چه کسی ارسال کرده)

جدول مقصد پیام :

- int id
- int idMessage
- int idUsers
- bool Read
(idMessage بیانگر این هست که به کدام سرآیند پیام ارتباط دارد ، idUsers بیانگر گیرنده پیام ، Read برای اینکه مشخص بشه که فرد پیام رو قبلا خوانده یا نه)

sg.programmer
چهارشنبه 02 مهر 1393, 21:24 عصر
سلام دوست عزیز .
دقیق تعریف نکردید که چه قابلیت هایی میخواید داشته باشه . مثلا میخواین فقط ارسال بشه برای کاربران ؟ یا میخوای جدول ارسال شده ها هم برای کسی که پیغامی رو ارسال میکنه داشته باشی ؟

با توجه به اینکه سوالتون ارسال پیام بین کاربران بوده ، فرض میگیریم برای ارسال شونده نمیخواید پیغام ذخیره شه . در این حالت پیشنهاد میکنم روش دوم رو برید ، چون برای هرکاربر بفرستید با توجه به اینکه احتمالا نوع فیلد متن شما Text ، Nvarchar(MAX) هست ، زیاد بهینه نمیشه !
جدول هم میتونین به این شکل پیاده سازی کنید :

جدول سرآیند پیام :
- int id
- int idUsers
- nvarchar Title
- nvarchar Body
- datecreated
- time created
(idUsers بیانگر این هست که چه کسی ارسال کرده)

جدول مقصد پیام :

- int id
- int idMessage
- int idUsers
- bool Read
(idMessage بیانگر این هست که به کدام سرآیند پیام ارتباط دارد ، idUsers بیانگر گیرنده پیام ، Read برای اینکه مشخص بشه که فرد پیام رو قبلا خوانده یا نه)

میخوام یک اتوماسیون اداری بنویسم که کاربران نامه های خودشونو رد و بدل کنن.
پیام برای مبدا هم باید ذخیره بشه. و گیرنده نامه ممکنه همه کارکنان هم باشند.

aminmousavi
پنج شنبه 03 مهر 1393, 03:44 صبح
روش فعلی فقط برای ارسال شدن پیام جواب میدهد به دلیل اینکه اگر شخصی پیام رو پاک کند (شخص گیرنده یا فرستنده) ، پیام برای هر دوی آنها پاک میشود
دو راه حل دارید :

1- فیلد اضافه کنید برای پاک کردن کاربران مثلا یک فیلد publish میزارید که اگر false شد یعنی پاک کرده کاربر و دیگر نباید نشان داده شود ! اما خوب فرستنده که publish هنوز true هست پیغام رو در ارسالی ها خودش میبینه چون رکورد هنوز وجود داره ! (خودم این روش رو انتخاب نمیکردم)
2- دوتا جدول مثل جدول هایی که عرض کردم ایجاد کنید :
جدول 1 : سرآیند Send ، مقصد پیام Send ، سرآیند Recive ، مقصد پیام Recive
فقط باید برای Send ها اون فیلد Read رو بردارید ، چون دیگر کاربردی نداره .

sg.programmer
پنج شنبه 03 مهر 1393, 17:59 عصر
روش فعلی فقط برای ارسال شدن پیام جواب میدهد به دلیل اینکه اگر شخصی پیام رو پاک کند (شخص گیرنده یا فرستنده) ، پیام برای هر دوی آنها پاک میشود
دو راه حل دارید :

1- فیلد اضافه کنید برای پاک کردن کاربران مثلا یک فیلد publish میزارید که اگر false شد یعنی پاک کرده کاربر و دیگر نباید نشان داده شود ! اما خوب فرستنده که publish هنوز true هست پیغام رو در ارسالی ها خودش میبینه چون رکورد هنوز وجود داره ! (خودم این روش رو انتخاب نمیکردم)
2- دوتا جدول مثل جدول هایی که عرض کردم ایجاد کنید :
جدول 1 : سرآیند Send ، مقصد پیام Send ، سرآیند Recive ، مقصد پیام Recive
فقط باید برای Send ها اون فیلد Read رو بردارید ، چون دیگر کاربردی نداره .

باید سلسله مراتب رعایت بشه --> چون ممکنه یک نامه به قسمتی بره که اون اداره مدیر و سپس چند قسمت که هر کدوم کاربری دارند ارسال بشه برای این هدر پیام چطور میشه؟

aminmousavi
جمعه 04 مهر 1393, 21:33 عصر
میخواین هم بشه برای افراد به صورت تکی پیغام ارسال کرد و هم به یک قسمت از سازمان که شامل چندین نفر میشه ؟

هم میتونین از این ساختار استفاده کنید و با کدنویسی نسبت به قسمتی که انتخاب شده به تمام کاربران اون قسمت یک رکورد توی جدول مقصد اختصاص بدید .
و هم میتونین از این 4تا جدول برای پیغام های شخص به شخص استفاده کنید و برای ارسال پیام به قسمتی از سازمان از جدول سرآیند پیام اما دیگر نیازی به جدول دوم ندارید کافیه یک فیلد بزارید که مشخص بشه برای کدام قسمت قرار هست ارسال بشه .

sg.programmer
پنج شنبه 01 آبان 1393, 16:53 عصر
روش فعلی فقط برای ارسال شدن پیام جواب میدهد به دلیل اینکه اگر شخصی پیام رو پاک کند (شخص گیرنده یا فرستنده) ، پیام برای هر دوی آنها پاک میشود
دو راه حل دارید :

1- فیلد اضافه کنید برای پاک کردن کاربران مثلا یک فیلد publish میزارید که اگر false شد یعنی پاک کرده کاربر و دیگر نباید نشان داده شود ! اما خوب فرستنده که publish هنوز true هست پیغام رو در ارسالی ها خودش میبینه چون رکورد هنوز وجود داره ! (خودم این روش رو انتخاب نمیکردم)
2- دوتا جدول مثل جدول هایی که عرض کردم ایجاد کنید :
جدول 1 : سرآیند Send ، مقصد پیام Send ، سرآیند Recive ، مقصد پیام Recive
فقط باید برای Send ها اون فیلد Read رو بردارید ، چون دیگر کاربردی نداره .

سلام میتونید این دو روش را بیشتر توشیح بدید؟ منظورتون را خوب متوجه نشدم

و برای روش دومی فیلدهاشو میگید چطوری باید باشه؟
تشکر