/// <summary> /// Загрузка списка комменарием для конкретного фото /// </summary> /// <param name="uid"></param> /// <param name="photoID"></param> /// <param name="count"></param> /// <param name="isRefresh"></param> /// <param name="restoreSession"></param> /// <returns></returns> public PhotosCommentsResponse LoadCommentsToPhoto(int uid, int photoID, int count, bool isRefresh, bool restoreSession, PhotosCommentsResponseHistory photosCommentsRespounseHistory) { DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto"); // т.к. "общий" кэш все равно нужен в работе PhotosCommentsResponseHistory newPhotosCommentsRespounseHistory; try { if (photosCommentsRespounseHistory == null) { //newPhotosCommentsRespounseHistory = Cache.Cache.LoadFromCache<PhotosCommentsResponseHistory>(string.Empty, "PhotosCommentsResponseHistory"); newPhotosCommentsRespounseHistory = DataModel.Data.PhotosCommentsResponseHistoryData; } else { newPhotosCommentsRespounseHistory = photosCommentsRespounseHistory; } if (newPhotosCommentsRespounseHistory == null) { throw new Exception(); } } catch (Exception) { newPhotosCommentsRespounseHistory = new PhotosCommentsResponseHistory(); } try { if (isRefresh) { throw new Exception(); } // ищем нужный айтем PhotosCommentsResponse newPhotosCommentsResponse = newPhotosCommentsRespounseHistory.GetItem(photoID); if (newPhotosCommentsResponse != null) { return newPhotosCommentsResponse; // выводим, если нашли } else { throw new Exception(); // обращаемся к серверу, если нет } } catch (Exception) { if (!isRefresh) return null; //WiFi if (_iDataLogic.GetOnlyWIFI() == "1") { if (!CoreHelper.TurnWiFi(true)) { throw new VKException(ExceptionMessage.NoConnection); } } // восстанавливаем сессию if (restoreSession) { AutoLogin(); } ErrorResponse newErrorResponse = null; PhotosCommentsResponse newPhotosCommentsResponse = null; // считываем требуемое количество комментариев к фотографии try { //throw new NullReferenceException(); newPhotosCommentsResponse = _iCommunicationLogic.LoadPhotosCommentsData(_iDataLogic.GetUid(), _iDataLogic.GetSessionKey(), "0", Convert.ToString(count - 1), uid.ToString() + "_" + photoID.ToString(), out newErrorResponse); } catch (VKException) { throw; } catch (TimeoutException ex) { DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto TimeoutException Message: " + ex.Message); DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto TimeoutException StackTrace: " + ex.StackTrace); throw new VKException(ExceptionMessage.NoConnection); } catch (WebException ex) { DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto WebException Message: " + ex.Message); DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto WebException StackTrace: " + ex.StackTrace); throw new VKException(ExceptionMessage.NoConnection); } catch (OutOfMemoryException ex) { DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto OutOfMemoryException Message: " + ex.Message); DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto OutOfMemoryException StackTrace: " + ex.StackTrace); throw; } catch (Exception ex) { DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto Exception Message: " + ex.Message); DebugHelper.WriteLogEntry("BaseLogic.LoadCommentsToPhoto Exception StackTrace: " + ex.StackTrace); } if (newPhotosCommentsResponse == null) { if (newErrorResponse != null) { if (newErrorResponse.error_code == "1") { if (!restoreSession) { return LoadCommentsToPhoto(uid, photoID, count, isRefresh, true, null); } else { throw new VKException(ExceptionMessage.ServerUnavalible); } } else if (newErrorResponse.error_code == "2") { throw new VKException(ExceptionMessage.AccountBloked); } else { throw new VKException(ExceptionMessage.UnknownError); } } else { //throw new VKException(ExceptionMessage.UnknownError); } } newPhotosCommentsResponse.pcrPhotoID = photoID; // устанавливаем ID фото newPhotosCommentsRespounseHistory.DelItem(photoID); // удаляем данные по фото, на случай если они есть newPhotosCommentsRespounseHistory.AddItem(newPhotosCommentsResponse); // добавляем полученные данные ////сохраняем в кэш всю историю //try //{ // DebugHelper.WriteLogEntry("(Кэш) Сохранение данных PhotosCommentsResponseHistory..."); // bool result; // if (photosCommentsRespounseHistory == null) // { // result = Cache.Cache.SaveToCache(newPhotosCommentsRespounseHistory, string.Empty, "PhotosCommentsResponseHistory"); // } // else // { // result = true; // } // if (result) // { // DebugHelper.WriteLogEntry("(Кэш) Данные PhotosCommentsResponseHistory успешно сохранены."); // } // else // { // DebugHelper.WriteLogEntry("(Кэш) Данные PhotosCommentsResponseHistory не сохранены."); // } //} //catch (Exception) //{ // DebugHelper.WriteLogEntry("(Кэш) В процессе сохранения данных PhotosCommentsResponseHistory произошла ошибка."); //} if (photosCommentsRespounseHistory == null) { //result = Cache.Cache.SaveToCache(newPhotosCommentsRespounseHistory, string.Empty, "PhotosCommentsResponseHistory"); DataModel.Data.PhotosCommentsResponseHistoryData = newPhotosCommentsRespounseHistory; } return newPhotosCommentsResponse; } }