mr.sirwan
سه شنبه 23 اردیبهشت 1399, 16:33 عصر
سلام و درود دوستان
بنده توی نرم افزارم میخوام مکانیسم ارجاع نامه رو پیاده کنم، البته قبلا پیاده کرده بودم و درست کار میکنه به شرطی که سلسله مراتب اداری رعایت بشه، یعنی شخص x به شخص y ارجاع بده و شخص y به شخص z و به همین صورت ارجاع تکی براش جوابگو بود، ولی بعضی مواقع پیش میاد که خود ارجاع گیرنده، نامه رو ارجاع نمیده به شخص بعدی و این کار رو میسپاره به یه نفر دیگه که به جاش ارجاع رو انجام بده، خب اینجا زنجیره ارجاعات به هم میخوره و توی نمایشش بصورت نمودار درختی توی کنترل treeview به مشکل میخورم و نمیتونم درخت ارجاعات رو درست نمایش بدم.
بصورت خیلی ساده بخوام ساختار جدول ارجاعاتم رو بیان کنم به این شکل هستش:
Id, LetterId, SenderId, ReceiverId, SendDate, Description, ReferType
خب با این اوصاف به این نتیجه رسیدم که باید یه فیلد کنترلی هم توی این ساختار باشه مثل شماره سطح یا عمق هر گره از درخت که بشه توسط اون فیلد عمق درخت رو پیمایش و به ترتیب گره های هر درخت رو توی تری ویو نمایش داد، اما بازم یه جاهایی ممکنه مشکل بوجود بیاد، برای همین بذارید با رسم شکل هم توضیح بدم که درکش راحتتر باشه:
151693
حالا طبق این شکلی که گذاشتم چندتا حالت پیش میاد که فعلا همینا به ذهنم رسیده و اگر دوستان مورد جدیدی به ذهنشون اومد و یا برای همین چند مورد راه حل مناسبی در نظر داشتن ممنون میشم راهنمایی کنن:
1. اگر کسی خارج از این ساختار (یعنی کسی غیر از این افراد که توی ارجاعات شرکت داشتن) یه ارجاع جدیدی رو انجام داد Level اون ارجاع جدید رو عدد یک قرار بده
2. اگر کاربر جزو این ساختار بود و خواست یه ارجاع جدید انجام بده، مقدار Level آخرین ارجاعی که توش دخیل بوده رو واکشی کن و یکی بهش اضافه کن (این مورد بیشتر روش گیرم چون مشخص نمیشه کاربر توی کدوم مرحله به بقیه ارجاع جدید میزنه مثلا برای کاربر محسن، اگه بخواد ارجاع جدیدی انجام بده، از کجا باید فهمید این ارجاع جدید باید توی لول 1 باشه یا توی لول 4؟)
در کل دوستان اگر ساختار بهتری وجود داره برای پیاده سازی این مکانیسم لطف کنین و بنده رو راهنمایی کنید، اگر اطلاعات و جزئیات بیشتری برای این مسئله نیاز بود بفرمایید تا اضافه کنم
بنده توی نرم افزارم میخوام مکانیسم ارجاع نامه رو پیاده کنم، البته قبلا پیاده کرده بودم و درست کار میکنه به شرطی که سلسله مراتب اداری رعایت بشه، یعنی شخص x به شخص y ارجاع بده و شخص y به شخص z و به همین صورت ارجاع تکی براش جوابگو بود، ولی بعضی مواقع پیش میاد که خود ارجاع گیرنده، نامه رو ارجاع نمیده به شخص بعدی و این کار رو میسپاره به یه نفر دیگه که به جاش ارجاع رو انجام بده، خب اینجا زنجیره ارجاعات به هم میخوره و توی نمایشش بصورت نمودار درختی توی کنترل treeview به مشکل میخورم و نمیتونم درخت ارجاعات رو درست نمایش بدم.
بصورت خیلی ساده بخوام ساختار جدول ارجاعاتم رو بیان کنم به این شکل هستش:
Id, LetterId, SenderId, ReceiverId, SendDate, Description, ReferType
خب با این اوصاف به این نتیجه رسیدم که باید یه فیلد کنترلی هم توی این ساختار باشه مثل شماره سطح یا عمق هر گره از درخت که بشه توسط اون فیلد عمق درخت رو پیمایش و به ترتیب گره های هر درخت رو توی تری ویو نمایش داد، اما بازم یه جاهایی ممکنه مشکل بوجود بیاد، برای همین بذارید با رسم شکل هم توضیح بدم که درکش راحتتر باشه:
151693
حالا طبق این شکلی که گذاشتم چندتا حالت پیش میاد که فعلا همینا به ذهنم رسیده و اگر دوستان مورد جدیدی به ذهنشون اومد و یا برای همین چند مورد راه حل مناسبی در نظر داشتن ممنون میشم راهنمایی کنن:
1. اگر کسی خارج از این ساختار (یعنی کسی غیر از این افراد که توی ارجاعات شرکت داشتن) یه ارجاع جدیدی رو انجام داد Level اون ارجاع جدید رو عدد یک قرار بده
2. اگر کاربر جزو این ساختار بود و خواست یه ارجاع جدید انجام بده، مقدار Level آخرین ارجاعی که توش دخیل بوده رو واکشی کن و یکی بهش اضافه کن (این مورد بیشتر روش گیرم چون مشخص نمیشه کاربر توی کدوم مرحله به بقیه ارجاع جدید میزنه مثلا برای کاربر محسن، اگه بخواد ارجاع جدیدی انجام بده، از کجا باید فهمید این ارجاع جدید باید توی لول 1 باشه یا توی لول 4؟)
در کل دوستان اگر ساختار بهتری وجود داره برای پیاده سازی این مکانیسم لطف کنین و بنده رو راهنمایی کنید، اگر اطلاعات و جزئیات بیشتری برای این مسئله نیاز بود بفرمایید تا اضافه کنم