Ejemplo n.º 1
0
 private static bool CheckConnection(Api bot, UserSession session)
 {
     if (session.Connection == null)
         bot.SendTextMessage(session.UserId, "Выполните подключение к базе данных");
     else
         return true;
     return false;
 }
Ejemplo n.º 2
0
 private static void SetTask(UserSession session, Action action)
 {
     var task = session.CurrentTask;
     if (task == null)
         session.CurrentTask = Task.Run(action);
     else
         task.ContinueWith(_ => action());
 }
Ejemplo n.º 3
0
 private static void DisconnectTask(Api bot, UserSession session)
 {
     if (CheckConnection(bot, session))
     {
         session.Connection.Disconnect();
         session.Connection = null;
         if (userSessions.ContainsKey(session.UserId))
             userSessions.Remove(session.UserId);
         bot.SendTextMessage(session.UserId, "Отключение соединения выполнено успешно");
     }
 }
Ejemplo n.º 4
0
 private static UserSession GetUserSession(int userId)
 {
     if (userSessions.ContainsKey(userId))
         return userSessions[userId];
     else
     {
         var session = new UserSession()
         {
             UserId = userId
         };
         userSessions.Add(userId, session);
         return session;
     }
 }
Ejemplo n.º 5
0
 private static void ConnectTask(Api bot, UserSession session, string userName, string userPass)
 {
     if (session.Connection != null)
         session.Connection.Disconnect();
     else
         session.Connection = new Loodsman();
     try
     {
         session.Connection.Connect(userName, userPass);
         bot.SendTextMessage(session.UserId, "Подключение выполнено успешно");
     }
     catch (COMException)
     {
         bot.SendTextMessage(session.UserId, "Ошибка соединения с базой данных");
     }
 }
Ejemplo n.º 6
0
 private static void ProjectsTask(Api bot, UserSession session)
 {
     if (CheckConnection(bot, session))
     {
         try
         {
             var rootObj = session.Connection.ProjectList();
             bot.SendTextMessage(session.UserId, "Список проектов:" + Environment.NewLine
                 + rootObj.Childs.ToStringEx());
             session.CurrentObject = rootObj;
         }
         catch (COMException)
         {
             bot.SendTextMessage(session.UserId, "Ошибка при получении списка проектов");
         }
     }
 }
Ejemplo n.º 7
0
 private static void FileTask(Api bot, UserSession session, string fileName)
 {
     if (CheckConnection(bot, session))
     {
         if (session.CurrentObject == null)
             bot.SendTextMessage(session.UserId, "Не выбран объект");
         else
         {
             var file = session.CurrentObject.Files.Find(f => f.Name.Equals(fileName, StringComparison.InvariantCultureIgnoreCase));
             if (file == null)
                 bot.SendTextMessage(session.UserId, "Файл не найден");
             else
                 try
                 {
                     var fileFullName = session.Connection.GetFile(session.CurrentObject, file);
                     var ext = Path.GetExtension(fileName);
                     using (FileStream fs = new FileStream(fileFullName, FileMode.Open, FileAccess.Read))
                     {
                         Task<Message> task;
                         // Отправим фото
                         if (new[] { ".jpg", ".jpeg", ".gif", ".tif", ".bmp" }.Contains(ext))
                             task = bot.SendPhoto(session.UserId, new FileToSend(fileName, fs),
                                 fileName, 0, new ReplyKeyboardHide() { HideKeyboard = true });
                         else
                             task = bot.SendDocument(session.UserId, new FileToSend(fileName, fs),
                                 0, new ReplyKeyboardHide() { HideKeyboard = true });
                         task.Wait();
                     }
                 }
                 catch (COMException)
                 {
                     bot.SendTextMessage(session.UserId, "Ошибка при получении файла",
                         false, 0, new ReplyKeyboardHide() { HideKeyboard = true });
                 }
         }
     }
 }
Ejemplo n.º 8
0
 private static void FileTask(Api bot, UserSession session)
 {
     if (CheckConnection(bot, session))
     {
         if (session.CurrentObject == null)
             bot.SendTextMessage(session.UserId, "Не выбран объект");
         else if (session.CurrentObject.Files.Count == 0)
             bot.SendTextMessage(session.UserId, "У объекта нет файлов");
         else
         {
             bot.SendTextMessage(session.UserId, "Выберите файл", false, 0,
                         new ReplyKeyboardMarkup()
                         {
                             Keyboard = session.CurrentObject.Files.ToKeyboard(),
                             ResizeKeyboard = true,
                             OneTimeKeyboard = true
                         });
         }
     }
 }
Ejemplo n.º 9
0
        private static void ObjectTask(Api bot, UserSession session, string objProduct)
        {
            if (CheckConnection(bot, session) && session.CurrentObject != null)
            {
                try
                {
                    var obj = session.CurrentObject.Childs.Find(o => o.Product.Equals(objProduct, StringComparison.InvariantCultureIgnoreCase));
                    if (obj == null)
                        bot.SendTextMessage(session.UserId, "Объект не найден");
                    else
                    {
                        session.CurrentObject = obj;

                        var attrs = session.Connection.Attributes(obj);
                        if (attrs.Count() > 0)
                            bot.SendTextMessage(session.UserId, "Атрибуты объекта:" + Environment.NewLine
                                + string.Join(Environment.NewLine, attrs), false, 0, new ReplyKeyboardHide() { HideKeyboard = true });

                        session.Connection.FileList(obj);
                        if (obj.Files.Count > 0)
                            bot.SendTextMessage(session.UserId, "Файлы объекта:" + Environment.NewLine
                                + obj.Files.ToStringEx(), false, 0, new ReplyKeyboardHide() { HideKeyboard = true });

                        if (attrs.Count() == 0 && obj.Files.Count == 0)
                            bot.SendTextMessage(session.UserId, "У объекта нет атрибутов и файлов",
                                false, 0, new ReplyKeyboardHide() { HideKeyboard = true });
                    }
                }
                catch (COMException)
                {
                    bot.SendTextMessage(session.UserId, "Ошибка при получении информации об объекте",
                        false, 0, new ReplyKeyboardHide() { HideKeyboard = true });
                }
            }
        }
Ejemplo n.º 10
0
 private static void ObjectTask(Api bot, UserSession session)
 {
     if (CheckConnection(bot, session))
     {
         try
         {
             LoodsmanObject curObj = session.Connection.ChildList(session.CurrentObject);
             
             if (curObj.Childs.Count == 0)
                 bot.SendTextMessage(session.UserId, "Не найдено объектов");
             else
                 bot.SendTextMessage(session.UserId, "Выберите объект", false, 0,
                             new ReplyKeyboardMarkup()
                             {
                                 Keyboard = curObj.Childs.ToKeyboard(),
                                 ResizeKeyboard = true,
                                 OneTimeKeyboard = true
                             });
             session.CurrentObject = curObj;
         }
         catch (COMException)
         {
             bot.SendTextMessage(session.UserId, "Ошибка при получении списка объектов");
         }
     }
 }