| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| [دروس برمجية] نظام الدعم الفني المباشرة كنت افكر نبدا بهذا الموضوع من وقت لكن انتظرت حتى انهيته لكي استطيع ان انزل الشرح مصور والتأكد من الكود والطريقة بالضبط وان شاء الله تعالى اننا نستفيد منها جميعا الموضوع رح يكون عبارة عن موضوع واحد وهو هذا نبدا فيه سوياً خطوة خطوة حتى نخلص نظام الدردشة الكامل رح نعتمد فيه على قواعد بيانات سواء SQL Server او Access انت لك حرية اختيار نظام قواعد البيانات ومع اني اشوف قواعد البيانات اكسس كافيه لكن سوف استخدم قواعد بيانات ال SQL Server في الشرح وكما قلنا لك حرية اختيار نظام قواعد البيانات الي تريد تشتغل عليه كما سوف نستخدم ملفات ال html لحفظ المحادثات التي تجري بين المستخدمين ونقوم بعمل ارشيف لمراجعة هذه المحادثات من قبل المدير العام للموقع تخطيط البرنامج سوف يكون بالشكل التالي 1- جدول في قاعدة البيانات لجلسات المحادثة حيث يحتوي هذا الجدول على اسم المستخدم او العميل بالاضافة لاسم المدير او موظف الدعم الذي يتم اجراء المحادثة معه بالاضافة لبعض المعلومات الاخرى مثل تاريخ بداية المحادثه ووقتها وتاريخ ووقت نهايتها بالاضافة لاسم وعنوان ملف ال html الذي سوف نقوم بحفظ المحادثه فيه بالاضافة لرقم جلسة المحادثة والذي يكون ترقيم تلقائي وعدم تكرار 2- جدول في قاعدة البيانات لجلسات موظفين الدعم عندما يقوم كل موظف للدعم بتسجيل دخول للنظام نقوم بانشاء سجل خاص به يحتوي على اسمه وتاريخ تسجيل دخوله ورقم الجلسه (ويكون ترقيم تلقائي وعدم تكرار) بالاضافة لحالة الجلسة ان كان الموظف متصل او انه قطع اتصاله يعني اون لاين او اف لاين في هذه الجلسة الان طريقة عمل النظام تكون بالشكل التالي - يقوم موظف الدعم بتسجيل الدخول ويتم انشاء سجل في جدول جلسات موظفين الدعم يحتوي على رقم جلسة الموظف (ترقيم تلقائي وعدم تكرار) بالاضافة لرقم عضوية هذا الموظف بالاضافة لتاريخ بداية جلسة الموظف وتاريخ نهاية جلسة الموظف وحالة الجلسة اون لاين او اف لاين عند دخول الموظف يكون تاريخ نهاية الجلسة غير موجود بعد لان الجلسة لم تنتهي يعني صفر وكذلك يكون حالة اتصال هذه الجلسة اون لاين وليس اف لاين عندما يقوم الموظف بتسجيل الخروج نقوم بوضع تاريخ انهاء جلسة الموظف وكذلك نحول حالة هذه الجلسة الي اف لاين - الان بعد ان يكون هناك موظف دعم واحد على الاقل متصل ويدخل عميل الي النظام يقوم النظام اولا بالبحث عن موظفين دعم فني فاذا لم يكن هناك اي موظف متصل حالياً (اون لاين) في جلسات الموظفين نمنع العميل من الدخول مع ظهور رسالة عدم وجود موظفين في حالة كان هناك موظفين دعم فني موجودين نقوم بالبحث عن اقل موظف يوجد عنده محادثات ونحول هذا المستخدم للموظف لكي نحوله للموظف نقوم بانشاء جلسة محادثة جديدة في جدول جلسات المحادثه نضع فيه رقم عضوية العميل وكذلك رقم عضوية موظف الدعم الفني الذي تم اختياره لاجراء المحادثه معه وكذلك تاريخ بداية الجلسة وتاريخ نهايتها الذي يكون صفر عند انشاء المحادثة وكذلك حالة هذه المحادثه هل هي اون لاين او اف لاين وعند اول دخول تكون اون لاين وعند خروج العميل او انهاء المحادثه نقوم بعملها اف لاين يعني محادثه منهيه وكذلك نضع تاريخ نهاية المحادثة السبب من اون لاين واف لاين هو اننا نريد الاحتفاظ بسجل المحادثات كامل لكي يتم مراجعته من قبل المدير العام باستمرار ليكون لدينا نظام ارشيف لجلسات الموظفين وجلسات المحادثه لمتابعة الموظفين من قبل المدير الان قلنا انه عند اول دخول للعميل سوف نقوم باختيار احد الموظفين ليتم تحويل العميل له وهذا الموظف يكون هو الموظف الذي عنده اقل عدد من المحادثات ونقوم بانشاء يجل في جدول المحادثات لهذه المحادثة قبل انشاء سجل المحادثه يجب ان نقوم بانشاء ملف html في داخل مجلد معين في الموقع نقوم بتتسميته اسم عشوائي يعتمد على التاريخ والساعه والدقيقه والثانيه لكي نضمن عدم تكرار الاسم مرتين كذلك نقوم بوضع اسم الملف في حقل اسم ملف المحادثه في داخل سجل المحادثه هذه هكذا اصبح كل شيء جاهز من اجل اجراء المحادثه يدخل العميل لصفحة المحادثة يجد فيها مربع كتابة النص وزر الارسال وكذلك شاشة الحوار عندما يقوم بكتابة رسالة ارسالها نقوم بجلب ملف المحادثه وفتحه واضافة النص الذي ادخله العميل في الملف ومن ثم اغلاقه مرة اخرى ونفس الامر لموظف الدعم الفني ولاننا سوف نستخدم لالاجاكس في عملية عرض الحوار فلن يكون هناك اي داعي لعمل رفرش لكي تظهر المحادثات من جديد ببساطه سوف نظهر كل جملة يتم كتابتها من احد الطرفين مباشرة في شاشة المحادثة لاننا سوف نستخدم الاجاكس ان شاء الله تعالى بقي توضيح اخير بخصوص شاشة المحادثة الخاصة بموظف الدعم سيكون موجود بها شريط يحتوي على كل المحادثات التي يتم اجرائها حاليا مع العملاء مجرد ان يضغط على اسم العميل يظهر له المحادثة التي يتم اجرائها مع العميل الفلاني ويقوم بمحادثته هذا هو طريقة عمل هذا النظام ومن الممكن ان نستغني عن صفحات ال HTML بان نخزن المحادثات في قاعدة البيانات بدل صفحات html ولكني فضلت الصفحات لكي نقلل الضغط على القاعده خصوصا انه عند اجراء محادثات كثيره سوف يكون هناك زرع جمل محادثه جديده كثيرا واذا كانت في القاعده هذا يعني انه سيتم فتح واغلاق وطلب من القاعده مرات عديده في وقت واحد وهذا يسبب ضغط عليها لذلك استبدلتها بصفحات ال html اريد اولا رايكم بالنظام بشكل عام واي افكار واي اقتراحات قبل ان نبدا باذن الله تعالى
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
السلام عليكم رائع جدا يا غالي انا اقترح ان تكون قاعدة البيانات2005 MS SQL عشان اتعلمها ![]() والله بصراحه تحظرني افكار جمه للدعم الفني راح اوافيك فيها غدا من المكتب ان شاء الله
__________________ HANi Explosion Of Creativity IMΛĞIИΛTIØИ is MØRЄ Important THΛИ Knowledge Soon my site will be in english TNT.NaT | |||||
|
| |||||
|
والله هذا ما كنت أتمنى، دروس متكاملة لنخرج بنتيجة وتصور كامل.. ونحن معاك بإذن الله .. وأتمنى تكون طريقة الدروس تفاعلية، بحيث نستفيد أكبر قدر ممكن، ومن طرق التفاعل: 1- أسئلة بعد نهاية كل درس تعبر عن مدى فهم المتلقي. 2- طلب تطبيق على الدرس بفكرة أخرى. 3- طلب بحث في جزئية معينة، ومن خلالها يتبين لنا فائدة بعض الخواص، وتفيد في تعلم كيفية الحصول على المعلومة. ما سبق منه مايصلح لما تنوي القيام به ومنه ما لا يصلح، ولكن أفكار في رأسي وددت مشاركتها بكم. وسر أخي أحمد موفقاً دائماً ..
__________________ بداية للمشاريع التجارية ASP.NET,ASP 3.0 المدونة الشخصية : asp2asp.com عدنا والعود أحمد... | |||||
|
| |||||
|
السلام عليكم ورحمة الله وبركاته اخواني بهذا الدرس سوف نقوم بعمل قاعدة البيانات باذن الله تعالى ومجلدات المشروع في البداية نقوم بعمل قاعدة البيانات وسوف نتبع في هذا النظام دردشة دعم فني بين العملاء وموظفين الدعم الفني في البداية نقوم بعمل جدول خاص بجلسات موظفين الدعم ندون فيه معلومات كل جلسه جلسلها موظف الدعم الفني اسم الجدول LiveSupportEmployeesSessions الحقول التي يحتويها هي ID رقم جلسة الموظف وهو حقل من نوع رقم ونحدده مفتاح اساسي وعدم تكرار EmployeeID من نوع رقم ويختص برقم عضويه موظف الدعم الفني StartTime من نوع نص وتحتوي على تاريخ ووقت دخول موظف الدعم الفني لهذه الجلسه EndTime من نوع نص وتحتوي على تاريخ ووقت خروج موظف الدعم الفني من هذه الجلسة IsOnLine من نوع char ويكون طولة 1 يعني حرف واحد فقط ويحتوي على Y او N اذا كانت Y يعني هذه الجلسة مازال نرتبط بها الموظف يعني موجود اون لاين واذا كانت N يعني الجلسة انتهت واصبحت في الارشيف الان جدول المحادثات التي تتم بين الموظفين والعملاء اسم الجدول LiveSupportConversationsSessions ويحتوي على الحقول التالية ID وهو رقم جلسة المحادثة ويكون من نوع رقم ومفتاح اساسي وعدم تكرار EmployeesSessionsID من نوع رقم وهو رقم جلسة الموظف التي ارتبط بها هذا العميل ورقم جلسة الموظف هي نفسها ال ID في الجدول السابق EmployeeID من نوع رقم وهي رقم عضوية موظف الدعم الذي ارتبط به العميل في هذه المحادثة GuestName من نوع نص ويحتوي على اسم المستخدم للزائر StartSessionTime من نوع نص ويحتوي على تاريخ ووقت بداية هذه جلسة المحادثة هذه EndSessionTime من نوع نص ويحتوي على تاريخ نهاية جلسة المحادثة هذه ConversationFileName من نوع نص وتحتوي على اسم ملف المحادثة الذي توجد فيه نصوص المحادثه يعني الكلام الذي دار بين العميل والموظف IsOpen نفس السابقة في الجدول السابق من نوع حرف طوله 1 نضع فيه اما Y او N اذا كانت Y يعني المحادثه مازالت اون لاين يعني الطرفين يتحدثون الان اما اذا كانت N تعني انه المحادثة بينهم انتهت واصبحت في الارشيف ملاحظة : لمستخدمين قواعد بيانات الاكسس بخصوص الحقول IsOpen في الجدولين ممكن يختاروا نوع الحقل Boolean يحتوي صح او خطأ ولكن لان هذا النوع غير موجود في ال sql server فاستخدمنا بدل منه حقل من حرف واحد نضع به Y او N هذه هي قاعدة البيانات ارجو منكم دراستها وفهمها ومراجعة الدرس السابق لفهم الالية العامه للمشروع كيف سوف تكون وباذن الله نبدا ببرمجة المشروع غدا او بعد غد
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
السلام عليكم ورحمة الله وبركاته اليوم ان شاء الله تعالى نبدا بالبرمجة وسوف نقوم بعمل صفحة الدردشة للزوار نقوم بانشاء صفحتين الاول live-support.aspx والثانيه live-conversation.aspx في الصفحة الاولى live-support.aspx نقوم بفحص حالة نظام الدردشة اذا كان لا يوجد موظف دعم فني متصل نقوم بكتابة رسالة له نخبره بها بعدم وجود موظف للدعم حاليا وفي حالة وجود موظفين نقوم بجلب رقم جلسة الموظف الاون لاين والتي تحتوي اقل عدد من المحادثات تجري الان ونربط هذا العميل مع هذه الجلسة وذلك عن طريق انشاء سجل جديد خاص به نضع فيه رقم جلسة الموظف التي يتبع لها وكذلك نقوم بانشاء اسم مستخدم خاص فيه وباقي المعلومات في جلسة المحادثة ومن ثم نحولة للصفحة live-conversation.aspx حيث تحتوي الصفحة على ادوات المحادثة عملنا اليوم سوف يكون في الصفحة live-support.aspx ننشىء الصفحة ونضع بها اداة ليبل واحده فقط سوف نستخدمها من اجل عرض رسالة عدم وجود موظفين دعم فني متصلين الان نسميها مثلا ErrorLabel في كود الصفحة وتحديدا في حدث تحميل الصفحة حيث سوف يتواجد الكود الكامل اولا نقوم بجلب ارقام موظفين الدعم الفني المتصلين حالياً ومعرفة اقل موظف لديه محادثات حالياً كود: 'جلب اسم موظف الدعم الفني المتواجد حالياً والذي سيتم تحويل هذا الزبون له
'جلب الموظفين الاون لاين
Dim dsEmployeesSessions As New DataSet
SQLStr = "select ID,EmployeeID from EMall_LiveSupportEmployeesSessions where IsOnLine Like 'Y'"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsEmployeesSessions)
Con.Close()
If dsEmployeesSessions.Tables(0).Rows.Count = 0 Then
ErrorLabel.Text = "لايوجد موظفين دعم فني متصلين حاليا"
Exit Sub
End If لاحظ ان جملة ال SQL اشترطنا بها ان تكون حالة الاتصال لجلسة الموظف IsOpen تساوي Y يعني اون لاين الان نقوم بجلب جميع المحادثات في جدول المحادثات والتي تجري حاليا لكل الجلسات وما نريده هو عدد المحادثات لكل جلسة ومن ثم نختار الجلسة التي تحتوي اقل عدد من المحادثات ونربط هذا العميل بها كود: ViewState("EmployeesSessionsID") = dsEmployeesSessions.Tables(0).Rows(0)(0)
ViewState("EmployeeIDV") = dsEmployeesSessions.Tables(0).Rows(0)(1)
Dim IEm As Integer = Nothing
For IEm = dsEmployeesSessions.Tables(0).Rows.Count - 1 To 0 Step -1
'جلب عدد المحادثات التي يجريها هذا الموظف الان
Dim dsConvNumber As New DataSet
SQLStr = "select EMall_LiveSupportConversationsSessions.ID,EMall_LiveGuestSupportConversationsSessions.ID from EMall_LiveSupportConversationsSessions,EMall_LiveGuestSupportConversationsSessions where EMall_LiveSupportConversationsSessions.IsActive Like 'Y' and EMall_LiveGuestSupportConversationsSessions.IsActive Like 'Y' and EMall_LiveSupportConversationsSessions.EmployeeID=" & dsEmployeesSessions.Tables(0).Rows(IEm)(0) & " and EMall_LiveGuestSupportConversationsSessions.EmployeeID=" & dsEmployeesSessions.Tables(0).Rows(IEm)(0)
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsConvNumber)
Con.Close()
ViewState("ConvNumber" & IEm) = dsConvNumber.Tables(0).Rows.Count
ViewState("EmployeesSessionsID" & IEm) = dsEmployeesSessions.Tables(0).Rows(IEm)(0)
ViewState("EmployeeIDV" & IEm) = dsEmployeesSessions.Tables(0).Rows(IEm)(1)
If ViewState("ConvNumber" & IEm) < ViewState("ConvNumber" & IEm - 1) Then
ViewState("EmployeesSessionsID") = dsEmployeesSessions.Tables(0).Rows(IEm)(0)
ViewState("EmployeeIDV") = dsEmployeesSessions.Tables(0).Rows(IEm)(1)
End If
Next
Dim EmployeesSessionsIDV As Long = ViewState("EmployeesSessionsID")
Dim EmployeeIDV As Long = ViewState("EmployeeIDV") في البداية قمنا بتخزين رقم الجلسة الاولى ورقم الموظف الذي تتبع له الجلسة الاولى في متغيرات كود: ViewState("EmployeesSessionsID") = dsEmployeesSessions.Tables(0).Rows(0)(0)
ViewState("EmployeeIDV") = dsEmployeesSessions.Tables(0).Rows(0)(1) وقد استخدمنا هنا ال ViewState لاننا لا نعلم تحديدا كم هو عدد الجلسات فاذا قمنا بتعريف متغير داخل الحلقة فانه في المرة القادمه التي سوف يدخل بها الحلقة سيتم حذف القيم الموجوده في المتغير للحلقة السابقة ومن ثم يسند لها قيم جديدة ونحن نريد ان نحتفظ بجميع القيم لجميع الحلقات لذلك استخدمنا ViewState بحيث يكون اسمها يتكون من كلمة يتبعها القيمة الموجوده في متغير الحلقة I وهكذا سوف نضمن انه لن يتكرر لنا نفس الاسم الموجود في ال ViewState مرتين اي اننا سوف نحصل على عدد من القيم المسنده داخل ViewState فلو كان لدينا 10 جلسات سوف نحصل على عشرة ViewState كل واحد لها اسم مختلف عن الاخر والاسماء منحصره بين القيمة الاولى للمتغير I الاولى وقيمة ال الاخيره للمتغير I كما تلاحظ اننا في نهاية الحلقة كنا كل مرة نقارن ال ViewState للحلقة السابقة بال ViewState للحقة الجديدة فاذا كانت ال ViewState الجديدة اصغر من القديمه هذا يعني ان هذا الموظف عنده محادثات اقل من السابق فنسند رقم عضويته ورقم جلسته ل ViewState الجلسة ورقم العضوية الرئيسي وهكذا بعد انتهاء الحلقة سوف نكون قد خرجنا بجلسة الموظف التي تحتوي اقل عدد من المحادثات نقوم بافراغ رقم الجلسة ورقم موظف الدعم الفني في متغيرات كود: Dim EmployeesSessionsIDV As Long = ViewState("EmployeesSessionsID")
Dim EmployeeIDV As Long = ViewState("EmployeeIDV") الان نقوم بانشاء ملف المحادثة الخاص بجلسة المحادثة هذه هكذا كود: 'انشاء ملف المحادثه
Dim rInt As Random = New Random
Dim RandomInt As String = rInt.Next(1, 1000000000).ToString
Dim FileName As String = RandomInt & "-" & Date.Now.ToString("mm-HH-dd-MM-yyyy") & ".htm"
'انشاء ملف ووضع فيه معلومات البطاقات
Dim FPath As String = dsPublicInfo.Tables(0).Rows(0)(1) & "livesupport" & "\" & FileName
Dim FilseSa As IO.FileStream = IO.File.Create(FPath)
FilseSa.Close() مع العلم ان dsPublicInfo.Tables(0).Rows(0)(1) هذه هي مسار مجلد الموقع الرئيسي الان نقوم بانشاء اسم المستخدم لهذا العميل نقوم بجلب رقم اخر جلسة محادثة تمت ونكون اسم العميل هكذا (زائر 2) حيث ان 1 هي رقم اخر محادثة تمت فتكون محادثة هذا العميل هي المحادثة رقم 2 فيكون اسمه زائر 2 بالطريقة التالية كود: 'جلب رقم اخر محادثة تمت في جدول محادثات الزوار
Dim dsLastConvInGTable As New DataSet
SQLStr = "select MAX(ID) from EMall_LiveGuestSupportConversationsSessions"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsLastConvInGTable)
Con.Close()
'انشاء اسم عشوائي للمستخدم
Dim GuestNameV As String = "زائر" & dsLastConvInGTable.Tables(0).Rows(0)(0) الان نقوم بزرع معلومات جلسة المحادثة الجديدة في جدول جلسات المحادثة بعد ان اصبح لدينا اسم الزائر ورقم جلسة الموظف ورقم الموظف واسم ملف المحادثة ... وغيره من المعلومات المطلوبة كود: 'زرع معلومات الجلسة الجديدة في قاعدة البيانات
SQLStr = "insert into EMall_LiveGuestSupportConversationsSessions(EmployeesSessionsID,EmployeeID,GuestName,StartSessionTime,EndSessionTime,ConversationFileName,IsActive) Values(" & EmployeesSessionsIDV & "," & EmployeeIDV & ",'" + GuestNameV + "','" + Date.Now.ToString("hh:mm:ss - dd/MM/yyyy") + "','0','" + FileName + "','Y')"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Cmd.ExecuteNonQuery()
Con.Close() بعد زرع سجل المحادثة نعود ونجلب رقم سجل المحادثة الذي تم زرعه قبل قليل لكي نحول المستخدم لصفحة المحادثة مع ارسال رقم المحادثة ملاحظة : مع العلم ان رقم المحادثة موجود مسبقا وهو رقم الزائر او الرقم الموجود في اسم الزائر ولكن في حالة رغبتك بتسمية الزائر بطريقة اخرى نترك لك الخيار نقوم بجلب رقم جلسة المحادثة كود: 'جلب رقم الجلسة التي تم اضافتها الان
Dim dsSessionId As New DataSet
SQLStr = "select ID from EMall_LiveGuestSupportConversationsSessions where EmployeeID=" & EmployeeIDV & " and GuestName Like '" + GuestNameV + "' and ConversationFileName Like '" + FileName + "'"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsSessionId)
Con.Close()
Dim SessionIdV As Long = dsSessionId.Tables(0).Rows(0)(0) قمنا بتخزين رقم الجلسة في متغير SessionIdV اخيرا سوف نقوم بفتح ملف المحادثة ونزرع فيه كود Html يتكون من جدول بسيط يحتوي تاريخ بداية هذه المحادثة ومن ثم نغلق الملف كود: 'جلب المعلومات الموجوده في الملف
Dim HtmlPageCodeV As String = Nothing
Dim ExistCodeV As New IO.StreamReader(FPath)
HtmlPageCodeV = ExistCodeV.ReadToEnd()
ExistCodeV.Close()
'اضافة الكود على صفحة المحادثه
HtmlPageCodeV &= "<html'>"
HtmlPageCodeV &= "<head>"
HtmlPageCodeV &= "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>"
HtmlPageCodeV &= "</head>"
HtmlPageCodeV &= "<body>"
HtmlPageCodeV &= "<br>" & Date.Now.ToString("hh:mm:ss - dd/MM/yyyy")
HtmlPageCodeV &= "</body></html>"
'زرع معلومات المحادقه في بداية الملف
Dim ReadHtmlFileV As New IO.StreamWriter(FPath)
ReadHtmlFileV.Write(HtmlPageCodeV)
ReadHtmlFileV.Close() اخيرا بعد الانتهاء وتجهيز متطلبات المحادثة نقوم بتحويل المستخدم لصفحة المحادثة الثانيه وهي live-conversation.aspx مع ارسال رقم المحادثة SessionIdV مع الرابط كود: 'تحويل المستخدم لصفحة المحادثة مع رقم الجلسة
Response.Redirect("live-conversation.aspx?id=" & SessionIdV) ملاحظة مهمه :- النظام حاليا يحتوي ثغره امنيه وهي ان اي متحدث يمكنه الاطلاع محادثات غيره والكتابة فيها مثلا لو كانت جلسة العميل رقمها 24 في الرابط الالكتروني وجرب العميل وكتب 25 بدل 24 فسوف ينتقل ويدخل لمحادثة العميل الذي دخل النظام بعده ويستطيع الاطلاع والكتابة فيها ولكي تتدارك هذه المشكلة ممكن نضيف على جلسة المحادثة حقل جديد وهو كود الجلسة بحيث يكون هذا كود عشوائي نرسله مع رقم الجلسة وفي صفحة المحادثة نتحقق من ان الكود المرسل يتبع فعلا للجلسة المرسلة فاذا لم يكن يتبع لها نقوم باخراجه من الصفحة وفي الوضع الحالي للنظام يمكن للعميل الاطلاع على المحادثات السابقة مثلا لو كان رقمه 24 وكتب في الرابط 3 فسوف يستعرض المحادثة التي رقمها 3 وهذا سوف نتداركه من خلال الصفحة الثانيه حيث سوف نمنع اي عميل من الاطلاع على محادثات منهيه يعني ارشيف المحادثات بينما يبقى الحل الامثل هو بعمل كود للمحادثة يمنع دخول المستخدم لها الا اذا تحقق من ان الكود المرسل يتبع فعلا لرقم المحادثة المرسل سوف اترك لكم مسألة الكود هذه كتمرين وهي ليست صعبه بالطبع كل متطلباتها موجوده مسبقا في نفس الشرح سواء انشاء كود عشوائي او حقل جديد وغيرهان شاء الله في الدرس القادم سوف ننتقل للصفحة الثانيه وهي صفحة اجراء الحوار
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
| اقتباس:
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
أخي واستاذي الأخ أحمد يوجد أخطاء كثيرة في الأكواد قد لاينتبه لها البعض قمت باكتشاف بعضها حالياً سوف أقوم بأكمالها غداً وارفاقها بإذن الله واعتذر عن تطفلي لكن علي ايضاحها للبعض شكراً أستاذي الاخ أحمد
__________________ قمت بإغلاق مواقعي من يريد شراء نسخه من جده طرب مراسلتي r.-f[@]hotmail.com | |||||
|
| |||||
| اقتباس:
واسف مقدما على وجود هذه الاخطاء بالتأكيد الغير مقصوده
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
| اقتباس:
بخصوص برنامج ال sql server تقدر تحصله من السوق سيديهات وتقدر تحمله من الانترنت سوي بحث عليه في جووجل
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
أخ أحمد حاوت أني اكمل ما قدرت في تناقضات كثيرة بالأسماء أتمنى منك مراجعة الأستدعائات من القاعده ومراجعة تعريفات المتغيرات اقتباس:
__________________ قمت بإغلاق مواقعي من يريد شراء نسخه من جده طرب مراسلتي r.-f[@]hotmail.com | |||||
|
| |||||
| اقتباس:
بارك الله فيك اخوي الثلج لكن مافهمتك تقصد اني مسميهم في قاعدة البيانات شكل وفي الكود كاتب شكل اخر ؟
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
الأخ الثلج يقصد هذا السطر: اقتباس:
وجاري إكمال تطبيق
__________________ بداية للمشاريع التجارية ASP.NET,ASP 3.0 المدونة الشخصية : asp2asp.com عدنا والعود أحمد... | |||||
|
| |||||
|
تقريباً هذا هو الكود الكامل مع إصلاح مايلزم، لكن تبقت مشكلة واحدة معلمة باللون الأحمر، حيث لا يوجد متغير سابق يصفها.. كود: 'تعريف متغير الاتصال
Dim Con As SqlClient.SqlConnection = New SqlClient.SqlConnection
'تعريف نص الاتصال
Dim ConStr As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
'اسناد نص الاتصال لمتغير الاتصال
Con.ConnectionString = ConStr
'تعريف متغير نسند له جملة ال SQL
Dim SQLStr As String = ""
'تعريف الكومند والذي بواسطته سنقوم بتنفيذ جملة السكويل على القاعدة في خطوة لاحقه
Dim Cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand
Dim Adap As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter
'جلب اسم موظف الدعم الفني المتواجد حالياً والذي سيتم تحويل هذا الزبون له
'جلب الموظفين الاون لاين
Dim dsEmployeesSessions As New DataSet
SQLStr = "select ID,EmployeeID from LiveSupportEmployeesSessions where IsOnLine Like 'Y'"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsEmployeesSessions)
Con.Close()
If dsEmployeesSessions.Tables(0).Rows.Count = 0 Then
ErrorLabel.Text = "لايوجد موظفين دعم فني متصلين حاليا"
Exit Sub
End If
ViewState("EmployeesSessionsID") = dsEmployeesSessions.Tables(0).Rows(0)(0)
ViewState("EmployeeIDV") = dsEmployeesSessions.Tables(0).Rows(0)(1)
Dim IEm As Integer = Nothing
For IEm = dsEmployeesSessions.Tables(0).Rows.Count - 1 To 0 Step -1
'جلب عدد المحادثات التي يجريها هذا الموظف الان
Dim dsConvNumber As New DataSet
SQLStr = "select LiveSupportConversationsSessions.ID,LiveGuestSupportConversationsSessions.ID from LiveSupportConversationsSessions,LiveGuestSupportConversationsSessions where LiveSupportConversationsSessions.IsActive Like 'Y' and LiveGuestSupportConversationsSessions.IsActive Like 'Y' and LiveSupportConversationsSessions.EmployeeID=" & dsEmployeesSessions.Tables(0).Rows(IEm)(0) & " and LiveGuestSupportConversationsSessions.EmployeeID=" & dsEmployeesSessions.Tables(0).Rows(IEm)(0)
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsConvNumber)
Con.Close()
ViewState("ConvNumber" & IEm) = dsConvNumber.Tables(0).Rows.Count
ViewState("EmployeesSessionsID" & IEm) = dsEmployeesSessions.Tables(0).Rows(IEm)(0)
ViewState("EmployeeIDV" & IEm) = dsEmployeesSessions.Tables(0).Rows(IEm)(1)
If ViewState("ConvNumber" & IEm) < ViewState("ConvNumber" & IEm - 1) Then
ViewState("EmployeesSessionsID") = dsEmployeesSessions.Tables(0).Rows(IEm)(0)
ViewState("EmployeeIDV") = dsEmployeesSessions.Tables(0).Rows(IEm)(1)
End If
Next
Dim EmployeesSessionsIDV As Long = ViewState("EmployeesSessionsID")
Dim EmployeeIDV As Long = ViewState("EmployeeIDV")
'انشاء ملف المحادثه
Dim rInt As Random = New Random
Dim RandomInt As String = rInt.Next(1, 1000000000).ToString
Dim FileName As String = RandomInt & "-" & Date.Now.ToString("mm-HH-dd-MM-yyyy") & ".htm"
Dim dsPublicInfo As New DataSet
'انشاء ملف ووضع فيه معلومات البطاقات
Dim FPath As String = dsPublicInfo.Tables(0).Rows(0)(1) & "livesupport" & "\" & FileName
Dim FilseSa As IO.FileStream = IO.File.Create(FPath)
FilseSa.Close()
'جلب رقم اخر محادثة تمت في جدول محادثات الزوار
Dim dsLastConvInGTable As New DataSet
SQLStr = "select MAX(ID) from LiveGuestSupportConversationsSessions"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Adap.SelectCommand = Cmd
Adap.Fill(dsLastConvInGTable)
Con.Close()
'انشاء اسم عشوائي للمستخدم
Dim GuestNameV As String = "زائر" & dsLastConvInGTable.Tables(0).Rows(0)(0)
'زرع معلومات الجلسة الجديدة في قاعدة البيانات
SQLStr = "insert into LiveGuestSupportConversationsSessions(EmployeesSessionsID,EmployeeID,GuestName,StartSessionTim e,EndSessionTime,ConversationFileName,IsActive) Values(" & EmployeesSessionsIDV & "," & EmployeeIDV & ",'" + GuestNameV + "','" + Date.Now.ToString("hh:mm:ss - dd/MM/yyyy") + "','0','" + FileName + "','Y')"
Cmd.CommandText = SQLStr
Cmd.Connection = Con
Con.Open()
Cmd.ExecuteNonQuery()
Con.Close()
'جلب المعلومات الموجوده في الملف
Dim HtmlPageCodeV As String = Nothing
Dim ExistCodeV As New IO.StreamReader(FPath)
HtmlPageCodeV = ExistCodeV.ReadToEnd()
ExistCodeV.Close()
'اضافة الكود على صفحة المحادثه
HtmlPageCodeV &= "<html'>"
HtmlPageCodeV &= "<head>"
HtmlPageCodeV &= "<META http-equiv='Content-Type' content='text/html; charset=UTF-8'>"
HtmlPageCodeV &= "</head>"
HtmlPageCodeV &= "<body>"
HtmlPageCodeV &= "<br>" & Date.Now.ToString("hh:mm:ss - dd/MM/yyyy")
HtmlPageCodeV &= "</body></html>"
'زرع معلومات المحادقه في بداية الملف
Dim ReadHtmlFileV As New IO.StreamWriter(FPath)
ReadHtmlFileV.Write(HtmlPageCodeV)
ReadHtmlFileV.Close()
'تحويل المستخدم لصفحة المحادثة مع رقم الجلسة
Response.Redirect("live-conversation.aspx?id=" & SessionIdV)
__________________ بداية للمشاريع التجارية ASP.NET,ASP 3.0 المدونة الشخصية : asp2asp.com عدنا والعود أحمد... | |||||
|
| |||||
|
صحيح في اختلاف بأسامي الـ column isactive لازم تكون isonline واسامي الجداول اللي ذكرها أخي aps2asp غيرتها عندي لكن تخوفت بعض الشيء أن اقوم بتغيير مقصدك من الكود فأحببت أن أدعه لك لكي تقوم بوضع نقاطك ولماستك عليه وشكراً أستاذي احمد
__________________ قمت بإغلاق مواقعي من يريد شراء نسخه من جده طرب مراسلتي r.-f[@]hotmail.com | |||||
|
| |||||
|
والله الكود يحتاج مراجعة، ولأنا لم نفهم آلية عمل البرنامج، فمن الصعب وضع حلول من رؤوسنا ![]() أتمنى أخي أحمد أن تضع لنا الكود كاملاً، فنحن اجتهدنا ولكن لكونا مازلنا في البداية نحتاج توضيح أكثر وأن يكون الكود ملائم للشرح وتحملنا
__________________ بداية للمشاريع التجارية ASP.NET,ASP 3.0 المدونة الشخصية : asp2asp.com عدنا والعود أحمد... | |||||
|
| |||||
|
حياكم الله اخي الثلج واخي asp2asp الكود موجود عندي في مشروع اتوقع اني فعلا ممكن اكون سميت اشياء في قاعدة البيانات وفي الكود كانت التسميه تختلف يمكن يكون حدث هذا بخصوص التسميات ياليت تعدلوها انتم يعني المسالة مافيها اجتهاد التسمية الغير موجوده في قاعدة البيانات معناتها انا مسميها غلط بالكود اوك اذا كان صعب عليكم انكم تتابعوا المشروع بهذه الطريقة رايح اعمله وانزله بالكود كامل مع قاعدة البيانات وانتم تدرسوها واذا في اي ملاحظة نتكلم عنها ان شاء الله فقط اعطوني يومين اجهزه لان عندي الان في مشروع كامل وهو جزء من المشروع رايح اعمله كمشروع مستقل ان شاء الله
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
أخ أحمد عندي كم سؤل لاهنت اقتباس:
اقتباس:
بحاول اتابع الكود واخبرك بالنتائج لكن ماني قادر أكمل لأن الجداول فارغه
__________________ قمت بإغلاق مواقعي من يريد شراء نسخه من جده طرب مراسلتي r.-f[@]hotmail.com | |||||
|
| |||||
|
هلا اخوي الثلج اقتباس:
صح موجود التاريخ باسم الملف لكن هذا في داخل الملف نفسه لكي يظهر للمستخدم والموظف تاريخ ووقت بداية المحادثة بينهم اقتباس:
وليس رقم عشوائي او نص عشوائي كما فعلنا باسم الملف اذا في شي مو مفهوم بلغني اخوي
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
تسلم أخوي أحمد بس كيف نقدر نجرب عمل البرنامج اذا لم يكن هنالك موظف دعم داخل ولم يكن هنالك جلسات هل بأمكانك أكمال المشروع وصفحة دخول الدعم لكي نستطيع اكمل المشروع
__________________ قمت بإغلاق مواقعي من يريد شراء نسخه من جده طرب مراسلتي r.-f[@]hotmail.com | |||||
|
![]() |
| أدوات الموضوع | |
|