protected bool ImportFileInternal(IExportImport model) { try { Settings settings = SettingsDao.LoadFirst(); if (settings == null) throw new ArgumentException("Отсутствуют настройки в базе данных."); string importFilePath = settings.DownloadDictionaryFilePath; Log.DebugFormat("Загрузка, файл {0}", importFilePath); bool hasWarnings; List<ImportDto> dtos = ReadFromFile(importFilePath, out hasWarnings); SetUsersToDatabase(dtos, ref hasWarnings); if (hasWarnings) { model.Error = "В файле найдены ошибки, некоторые записи были пропущены."; Log.Debug(model.Error); } ExportImportAction action = new ExportImportAction { Type = (int)ExportImportType.Import, Date = DateTime.Now, }; ExportImportActionDao.MergeAndFlush(action); Log.DebugFormat("Загрузка, файл {0} успешна.", importFilePath); SendEmail(settings, model, settings.ExportImportEmail, "Загрузка файла", string.Format("Файл был успешно загружен {0}", DateTime.Now)); if (!string.IsNullOrEmpty(model.EmailDto.Error)) { string sendMessageError = string.Format(@"Файл был успешно загружен {0}, однако письмо об этом не было отправлено. Ошибка: {1}", DateTime.Now, model.EmailDto.Error); model.Error = string.IsNullOrEmpty(model.Error) ? sendMessageError : model.Error + " " + sendMessageError; } return true; } catch (Exception ex) { Log.Error("Exception", ex); model.Error = "Исключение: " + ex.GetBaseException().Message; return false; } }
protected bool ExportFileInternal(IExportImport model) { try { Settings settings = SettingsDao.LoadFirst(); if (settings == null) throw new ArgumentException("Отсутствуют настройки в базе данных."); string exportFilePath = settings.UploadTimesheetFilePath; DateTime exportMonth = model.Month; Log.DebugFormat("Выгрузка за {0}, файл {1}",GetMonth(exportMonth),exportFilePath); IList<Timesheet> timesheets = TimesheetDao.LoadTimesheetsForMonth(exportMonth); List<string> result = SerializeTimesheets(timesheets); Encoding encoding = Encoding.GetEncoding(1251); System.IO.File.WriteAllLines(exportFilePath,result, encoding); ExportImportAction action = new ExportImportAction { Type = (int)ExportImportType.Export, Date = DateTime.Now, Month = exportMonth, }; ExportImportActionDao.MergeAndFlush(action); string exportMonthString = GetMonth(exportMonth); //exportMonth.ToString("MMMM") + " " + exportMonth.Year; Log.DebugFormat("Выгрузка за {0} (файл {1}) успешна.", exportMonthString,exportFilePath); SendEmail(settings, model, settings.ExportImportEmail, "Выгрузка файла", string.Format("Файл за {0} был успешно выгружен {1}", exportMonthString , DateTime.Now)); if (!string.IsNullOrEmpty(model.EmailDto.Error)) { string sendMessageError = string.Format(@"Файл за {0} успешно выгружен {1}, однако письмо об этом не было отправлено. Ошибка: {2}", exportMonthString, DateTime.Now, model.EmailDto.Error); model.Error = sendMessageError; } return true; } catch (Exception ex) { Log.Error("Exception", ex); model.Error = "Исключение: " + ex.GetBaseException().Message; return false; } }