صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 27

الموضوع: [دروس برمجية] نظام الدعم الفني المباشرة

  1. #1

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370

    [دروس برمجية] نظام الدعم الفني المباشرة



    السلام عليكم ورحمة الله وبركاته

    كنت افكر نبدا بهذا الموضوع من وقت لكن انتظرت حتى انهيته لكي استطيع ان انزل الشرح مصور والتأكد من الكود والطريقة بالضبط وان شاء الله تعالى اننا نستفيد منها جميعا

    الموضوع رح يكون عبارة عن موضوع واحد وهو هذا نبدا فيه سوياً خطوة خطوة حتى نخلص نظام الدردشة الكامل

    رح نعتمد فيه على قواعد بيانات سواء SQL Server او Access انت لك حرية اختيار نظام قواعد البيانات

    ومع اني اشوف قواعد البيانات اكسس كافيه لكن سوف استخدم قواعد بيانات ال SQL Server في الشرح وكما قلنا لك حرية اختيار نظام قواعد البيانات الي تريد تشتغل عليه

    كما سوف نستخدم ملفات ال html لحفظ المحادثات التي تجري بين المستخدمين ونقوم بعمل ارشيف لمراجعة هذه المحادثات من قبل المدير العام للموقع

    تخطيط البرنامج سوف يكون بالشكل التالي

    1- جدول في قاعدة البيانات لجلسات المحادثة
    حيث يحتوي هذا الجدول على اسم المستخدم او العميل بالاضافة لاسم المدير او موظف الدعم الذي يتم اجراء المحادثة معه بالاضافة لبعض المعلومات الاخرى مثل تاريخ بداية المحادثه ووقتها وتاريخ ووقت نهايتها بالاضافة لاسم وعنوان ملف ال html الذي سوف نقوم بحفظ المحادثه فيه بالاضافة لرقم جلسة المحادثة والذي يكون ترقيم تلقائي وعدم تكرار

    2- جدول في قاعدة البيانات لجلسات موظفين الدعم
    عندما يقوم كل موظف للدعم بتسجيل دخول للنظام نقوم بانشاء سجل خاص به يحتوي على اسمه وتاريخ تسجيل دخوله ورقم الجلسه (ويكون ترقيم تلقائي وعدم تكرار) بالاضافة لحالة الجلسة ان كان الموظف متصل او انه قطع اتصاله يعني اون لاين او اف لاين في هذه الجلسة


    الان طريقة عمل النظام تكون بالشكل التالي

    - يقوم موظف الدعم بتسجيل الدخول ويتم انشاء سجل في جدول جلسات موظفين الدعم يحتوي على رقم جلسة الموظف (ترقيم تلقائي وعدم تكرار) بالاضافة لرقم عضوية هذا الموظف بالاضافة لتاريخ بداية جلسة الموظف وتاريخ نهاية جلسة الموظف وحالة الجلسة اون لاين او اف لاين

    عند دخول الموظف يكون تاريخ نهاية الجلسة غير موجود بعد لان الجلسة لم تنتهي يعني صفر
    وكذلك يكون حالة اتصال هذه الجلسة اون لاين وليس اف لاين

    عندما يقوم الموظف بتسجيل الخروج نقوم بوضع تاريخ انهاء جلسة الموظف وكذلك نحول حالة هذه الجلسة الي اف لاين


    - الان بعد ان يكون هناك موظف دعم واحد على الاقل متصل
    ويدخل عميل الي النظام يقوم النظام اولا بالبحث عن موظفين دعم فني فاذا لم يكن هناك اي موظف متصل حالياً (اون لاين) في جلسات الموظفين نمنع العميل من الدخول مع ظهور رسالة عدم وجود موظفين
    في حالة كان هناك موظفين دعم فني موجودين نقوم بالبحث عن اقل موظف يوجد عنده محادثات ونحول هذا المستخدم للموظف
    لكي نحوله للموظف نقوم بانشاء جلسة محادثة جديدة في جدول جلسات المحادثه نضع فيه رقم عضوية العميل وكذلك رقم عضوية موظف الدعم الفني الذي تم اختياره لاجراء المحادثه معه وكذلك تاريخ بداية الجلسة وتاريخ نهايتها الذي يكون صفر عند انشاء المحادثة وكذلك حالة هذه المحادثه هل هي اون لاين او اف لاين وعند اول دخول تكون اون لاين وعند خروج العميل او انهاء المحادثه نقوم بعملها اف لاين يعني محادثه منهيه وكذلك نضع تاريخ نهاية المحادثة

    السبب من اون لاين واف لاين هو اننا نريد الاحتفاظ بسجل المحادثات كامل لكي يتم مراجعته من قبل المدير العام باستمرار ليكون لدينا نظام ارشيف لجلسات الموظفين وجلسات المحادثه لمتابعة الموظفين من قبل المدير


    الان قلنا انه عند اول دخول للعميل سوف نقوم باختيار احد الموظفين ليتم تحويل العميل له وهذا الموظف يكون هو الموظف الذي عنده اقل عدد من المحادثات ونقوم بانشاء يجل في جدول المحادثات لهذه المحادثة

    قبل انشاء سجل المحادثه يجب ان نقوم بانشاء ملف html في داخل مجلد معين في الموقع نقوم بتتسميته اسم عشوائي يعتمد على التاريخ والساعه والدقيقه والثانيه لكي نضمن عدم تكرار الاسم مرتين
    كذلك نقوم بوضع اسم الملف في حقل اسم ملف المحادثه في داخل سجل المحادثه هذه


    هكذا اصبح كل شيء جاهز من اجل اجراء المحادثه

    يدخل العميل لصفحة المحادثة يجد فيها مربع كتابة النص وزر الارسال وكذلك شاشة الحوار
    عندما يقوم بكتابة رسالة ارسالها نقوم بجلب ملف المحادثه وفتحه واضافة النص الذي ادخله العميل في الملف ومن ثم اغلاقه مرة اخرى

    ونفس الامر لموظف الدعم الفني

    ولاننا سوف نستخدم لالاجاكس في عملية عرض الحوار فلن يكون هناك اي داعي لعمل رفرش لكي تظهر المحادثات من جديد ببساطه سوف نظهر كل جملة يتم كتابتها من احد الطرفين مباشرة في شاشة المحادثة لاننا سوف نستخدم الاجاكس ان شاء الله تعالى


    بقي توضيح اخير بخصوص شاشة المحادثة الخاصة بموظف الدعم
    سيكون موجود بها شريط يحتوي على كل المحادثات التي يتم اجرائها حاليا مع العملاء
    مجرد ان يضغط على اسم العميل يظهر له المحادثة التي يتم اجرائها مع العميل الفلاني ويقوم بمحادثته



    هذا هو طريقة عمل هذا النظام ومن الممكن ان نستغني عن صفحات ال HTML بان نخزن المحادثات في قاعدة البيانات بدل صفحات html
    ولكني فضلت الصفحات لكي نقلل الضغط على القاعده خصوصا انه عند اجراء محادثات كثيره سوف يكون هناك زرع جمل محادثه جديده كثيرا واذا كانت في القاعده هذا يعني انه سيتم فتح واغلاق وطلب من القاعده مرات عديده في وقت واحد وهذا يسبب ضغط عليها
    لذلك استبدلتها بصفحات ال html




    اريد اولا رايكم بالنظام بشكل عام واي افكار واي اقتراحات قبل ان نبدا باذن الله تعالى





    __________________
    @_@


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2003
    المشاركات
    377


    السلام عليكم

    رائع جدا يا غالي

    انا اقترح ان تكون قاعدة البيانات2005 MS SQL عشان اتعلمها


    والله بصراحه تحظرني افكار جمه للدعم الفني راح اوافيك فيها غدا من المكتب ان شاء الله





    __________________
    HANi
    تاريخ التسجيل: Jun 2003-
    السنة السادسة على التوالي مع سوالف

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    رائع جداأ متابعينن معك أخ احمد





    __________________
    Eng.Fedail
    Computer and Electronics Engineer

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    والله هذا ما كنت أتمنى، دروس متكاملة لنخرج بنتيجة وتصور كامل..

    ونحن معاك بإذن الله ..

    وأتمنى تكون طريقة الدروس تفاعلية، بحيث نستفيد أكبر قدر ممكن، ومن طرق التفاعل:

    1- أسئلة بعد نهاية كل درس تعبر عن مدى فهم المتلقي.

    2- طلب تطبيق على الدرس بفكرة أخرى.

    3- طلب بحث في جزئية معينة، ومن خلالها يتبين لنا فائدة بعض الخواص، وتفيد في تعلم كيفية الحصول على المعلومة.

    ما سبق منه مايصلح لما تنوي القيام به ومنه ما لا يصلح، ولكن أفكار في رأسي وددت مشاركتها بكم.

    وسر أخي أحمد موفقاً دائماً ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  5. #5

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    السلام عليكم ورحمة الله وبركاته

    اخواني بهذا الدرس سوف نقوم بعمل قاعدة البيانات باذن الله تعالى ومجلدات المشروع

    في البداية نقوم بعمل قاعدة البيانات وسوف نتبع في هذا النظام دردشة دعم فني بين العملاء وموظفين الدعم الفني

    في البداية نقوم بعمل جدول خاص بجلسات موظفين الدعم ندون فيه معلومات كل جلسه جلسلها موظف الدعم الفني

    اسم الجدول
    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


    هذه هي قاعدة البيانات ارجو منكم دراستها وفهمها ومراجعة الدرس السابق لفهم الالية العامه للمشروع كيف سوف تكون


    وباذن الله نبدا ببرمجة المشروع غدا او بعد غد





    __________________
    @_@

  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    ماشاء الله، بارك الله فيك اخي احمد ..

    لقد بدأت في التجهيز، ومستعد للبدء ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  7. #7

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    السلام عليكم ورحمة الله وبركاته

    اليوم ان شاء الله تعالى نبدا بالبرمجة

    وسوف نقوم بعمل صفحة الدردشة للزوار

    نقوم بانشاء صفحتين الاول
    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
    قمنا بجلب جميع موظفين الدعم الفني المتصلين حاليا وفي حالة لم يكن هناك نتائج عائده لنا في الداتا ست هذا يعني انه لا يوجد موظفين دعم فني اذا نقوم بكتابة رسالة عدم وجود موظفين ونخرجه من تنفيذ بقية الكود باستخدام Exit Sub

    لاحظ ان جملة ال 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 لاننا لا نعلم تحديدا كم هو عدد الجلسات فاذا قمنا بتعريف متغير داخل الحلقة فانه في المرة القادمه التي سوف يدخل بها الحلقة سيتم حذف القيم الموجوده في المتغير للحلقة السابقة ومن ثم يسند لها قيم جديدة ونحن نريد ان نحتفظ بجميع القيم لجميع الحلقات لذلك استخدمنا ViewState بحيث يكون اسمها يتكون من كلمة يتبعها القيمة الموجوده في متغير الحلقة I وهكذا سوف نضمن انه لن يتكرر لنا نفس الاسم الموجود في ال ViewState مرتين اي اننا سوف نحصل على عدد من القيم المسنده داخل ViewState فلو كان لدينا 10 جلسات سوف نحصل على عشرة ViewState كل واحد لها اسم مختلف عن الاخر والاسماء منحصره بين القيمة الاولى للمتغير I الاولى وقيمة ال الاخيره للمتغير I


    كما تلاحظ اننا في نهاية الحلقة كنا كل مرة نقارن ال ViewState للحلقة السابقة بال ViewState للحقة الجديدة فاذا كانت ال ViewState الجديدة اصغر من القديمه هذا يعني ان هذا الموظف عنده محادثات اقل من السابق فنسند رقم عضويته ورقم جلسته ل ViewState الجلسة ورقم العضوية الرئيسي

    وهكذا بعد انتهاء الحلقة سوف نكون قد خرجنا بجلسة الموظف التي تحتوي اقل عدد من المحادثات


    نقوم بافراغ رقم الجلسة ورقم موظف الدعم الفني في متغيرات

    كود:
    Dim EmployeesSessionsIDV As Long = ViewState("EmployeesSessionsID")
            Dim EmployeeIDV As Long = ViewState("EmployeeIDV")
    استخدم هنا نوع Long وليس Integer لان مع مرور الوقت قد يكون رقم الجلسات كبير جدا بحيث لا يستوعبه المتغير integer خصوصا في الدردشة حيث انشاء سجلات كثيره اذا كان المستخدمين كثر


    الان نقوم بانشاء ملف المحادثة الخاص بجلسة المحادثة هذه هكذا

    كود:
    'انشاء ملف المحادثه
            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()
    لاحظ اننا عملنا اسم الملف باستخدام الوقت والتاريخ وقبلها رقم عشوائي وذلك لكي نضمن عدم تكرار الاسم مرتين ومن ثما قمنا بانشاء الملف من نوع html داخل المجلد livesupport في الموقع

    مع العلم ان
    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 وهذا سوف نتداركه من خلال الصفحة الثانيه حيث سوف نمنع اي عميل من الاطلاع على محادثات منهيه يعني ارشيف المحادثات

    بينما يبقى الحل الامثل هو بعمل كود للمحادثة يمنع دخول المستخدم لها الا اذا تحقق من ان الكود المرسل يتبع فعلا لرقم المحادثة المرسل

    سوف اترك لكم مسألة الكود هذه كتمرين وهي ليست صعبه بالطبع كل متطلباتها موجوده مسبقا في نفس الشرح سواء انشاء كود عشوائي او حقل جديد وغيره



    ان شاء الله في الدرس القادم سوف ننتقل للصفحة الثانيه وهي صفحة اجراء الحوار





    __________________
    @_@

  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    ألف شكر أخي أحمد ..

    جاري التطبيق ..





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...

  9. #9

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة asp2asp
    ألف شكر أخي أحمد ..

    جاري التطبيق ..
    حياك الله اخوي وبنتظار نتائج التجربه عشان نكمل باذن الله تعالى





    __________________
    @_@

  10. #10
    عضو نشيط
    تاريخ التسجيل
    Feb 2003
    المشاركات
    151


    طيب ممكن نبدأ من الصفر

    كيف احصل على برنامج sql server 2005


    صدقني اريد التعلم و متحمس جدا لموضوعك

    لك مني كل التقدير و الاحترام





    __________________
    سبحان الله و الحمد لله و لا إله الا الله و الله أكبر

  11. #11
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    أخي واستاذي الأخ أحمد يوجد أخطاء كثيرة في الأكواد قد لاينتبه لها البعض قمت باكتشاف بعضها حالياً سوف أقوم بأكمالها غداً وارفاقها بإذن الله واعتذر عن تطفلي لكن علي ايضاحها للبعض

    شكراً أستاذي الاخ أحمد





    __________________
    Eng.Fedail
    Computer and Electronics Engineer

  12. #12

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة الثلج
    أخي واستاذي الأخ أحمد يوجد أخطاء كثيرة في الأكواد قد لاينتبه لها البعض قمت باكتشاف بعضها حالياً سوف أقوم بأكمالها غداً وارفاقها بإذن الله واعتذر عن تطفلي لكن علي ايضاحها للبعض

    شكراً أستاذي الاخ أحمد
    بالتأكيد اخوي ياليت توضح لنا الاخطاء الموجوده
    واسف مقدما على وجود هذه الاخطاء بالتأكيد الغير مقصوده





    __________________
    @_@

  13. #13

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة aja
    طيب ممكن نبدأ من الصفر

    كيف احصل على برنامج sql server 2005


    صدقني اريد التعلم و متحمس جدا لموضوعك

    لك مني كل التقدير و الاحترام
    اخوي بخصوص البداية من الصفر تقدر تتابع في نفس المنتدى هذا في مواضيع كثيره تحكي عن اللغة والبداية فيها

    بخصوص برنامج ال sql server تقدر تحصله من السوق سيديهات وتقدر تحمله من الانترنت سوي بحث عليه في جووجل





    __________________
    @_@

  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2000
    المشاركات
    762


    أخ أحمد حاوت أني اكمل ما قدرت في تناقضات كثيرة بالأسماء أتمنى منك مراجعة الأستدعائات من القاعده

    ومراجعة تعريفات المتغيرات


    Dim constring As String = ConfigurationManager.ConnectionStrings("live-support").ConnectionString
    Dim con As New Data.SqlClient.SqlConnection(constring)
    Dim dsEmployeesSessions As New Data.DataSet
    Dim SQLStr As String = "select ID,EmployeeID from LiveSupportEmployeesSessions where IsOnLine Like 'Y'"
    Dim cmd As New Data.SqlClient.SqlCommand
    Dim adap As New Data.SqlClient.SqlDataAdapter
    Cmd.CommandText = SQLStr
    cmd.Connection = Con
    Con.Open()
    Adap.SelectCommand = Cmd
    Adap.Fill(dsEmployeesSessions)
    Con.Close()

    If dsEmployeesSessions.Tables(0).Rows.Count = 0 Then
    lblerror.Text = "لايوجد موظفين دعم فني متصلين حاليا"
    Exit Sub
    End If
    بخصوص الكود الأول هذا هو معدل مع وضع تعريف الاتصال في ملف الكونفغ





    __________________
    Eng.Fedail
    Computer and Electronics Engineer

  15. #15

    تاريخ التسجيل
    Jun 2006
    المشاركات
    1,370


    اقتباس المشاركة الأصلية كتبت بواسطة الثلج
    أخ أحمد حاوت أني اكمل ما قدرت في تناقضات كثيرة بالأسماء أتمنى منك مراجعة الأستدعائات من القاعده

    ومراجعة تعريفات المتغيرات




    بخصوص الكود الأول هذا هو معدل مع وضع تعريف الاتصال في ملف الكونفغ

    بارك الله فيك اخوي الثلج

    لكن مافهمتك تقصد اني مسميهم في قاعدة البيانات شكل وفي الكود كاتب شكل اخر ؟





    __________________
    @_@





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا|شقق للايجار في الكويت | بيوت للبيع في الكويت | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض