/// <summary> /// Процедура создания кода для подразделения. /// </summary> /// <param name="entity">Заявка для подразделения</param> /// <param name="dep">Подразделение, для которго надо создать код.</param> /// <param name="curUser">Текущий пользователь.</param> /// <param name="error">Переменная для сообщений.</param> /// <returns></returns> protected bool CreateCodeForDepartment(StaffDepartmentRequest entity, Department dep, User curUser, out string error) { error = string.Empty; string Code = string.Empty; if (entity.ItemLevel == 1 || entity.ItemLevel > 7) { error = "Создание подразделения такого уровня не предусмотрено программой!"; return true; } //в заявках на изменение код создается только для точек 7 иуровня if (entity.RequestType.Id == 2 && entity.ItemLevel <= 6) { return true; } StaffDepartmentBranch br = new StaffDepartmentBranch(); StaffDepartmentManagement mn = new StaffDepartmentManagement(); switch (entity.ItemLevel) { case 2://филиал StaffDepartmentBranch Depbr = new StaffDepartmentBranch() { Code = StaffDepartmentBranchDao.GetNewBranchCode(), Name = dep.Name, Department = dep, Creator = curUser, CreateDate = DateTime.Now }; try { StaffDepartmentBranchDao.SaveAndFlush(Depbr); } catch (Exception ex) { StaffDepartmentBranchDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } break; case 3://дирекция br = StaffDepartmentBranchDao.GetDepartmentBranchByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (br == null) { error = "Для данной точки не определен филиал! Проверьте данные в справочнике кодировки."; return false; } StaffDepartmentManagement Depm = new StaffDepartmentManagement() { Code = StaffDepartmentManagementDao.GetNewManagementCode(br),//сделать Name = dep.Name, DepartmentBranch = br, Department = dep, Creator = curUser, CreateDate = DateTime.Now }; try { StaffDepartmentManagementDao.SaveAndFlush(Depm); } catch (Exception ex) { StaffDepartmentManagementDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } break; case 4://управление mn = StaffDepartmentManagementDao.GetDepartmentManagementByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (mn == null) { error = "Для данной точки не определена дирекция! Проверьте данные в справочнике кодировки."; return false; } StaffDepartmentAdministration Depa = new StaffDepartmentAdministration() { Code = StaffDepartmentAdministrationDao.GetNewAdministrationCode(mn), Name = dep.Name, DepartmentManagement = mn, Department = dep, Creator = curUser, CreateDate = DateTime.Now }; try { StaffDepartmentAdministrationDao.SaveAndFlush(Depa); } catch (Exception ex) { StaffDepartmentAdministrationDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } break; case 5://бизнес-группа StaffDepartmentAdministration adm = StaffDepartmentAdministrationDao.GetDepartmentAdministrationByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (adm == null) { error = "Для данной точки не определено управление! Проверьте данные в справочнике кодировки."; return false; } StaffDepartmentBusinessGroup Depbg = new StaffDepartmentBusinessGroup() { Code = StaffDepartmentBusinessGroupDao.GetNewBusinessGroupCode(adm), Name = dep.Name, DepartmentAdministration = adm, Department = dep, Creator = curUser, CreateDate = DateTime.Now }; try { StaffDepartmentBusinessGroupDao.SaveAndFlush(Depbg); } catch (Exception ex) { StaffDepartmentBusinessGroupDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } break; case 6://рп-привязка StaffDepartmentBusinessGroup bg = StaffDepartmentBusinessGroupDao.GetDepartmentBusinessGroupByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (bg == null) { error = "Для данной точки не определена бизнес-группа! Проверьте данные в справочнике кодировки."; return false; } StaffDepartmentRPLink Deprp = new StaffDepartmentRPLink() { Code = StaffDepartmentRPLinkDao.GetNewRPLinkCode(bg), Name = dep.Name, DepartmentBG = bg, Department = dep, Creator = curUser, CreateDate = DateTime.Now }; try { StaffDepartmentRPLinkDao.SaveAndFlush(Deprp); } catch (Exception ex) { StaffDepartmentRPLinkDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } break; case 7://подразделение (точка) //создаем код только для фронтов и бэкфронтов if (entity.DepartmentAccessory.Id == 2 || entity.DepartmentAccessory.Id == 6) { br = StaffDepartmentBranchDao.GetDepartmentBranchByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (br == null) { error = "Для данной точки не определен филиал! Проверьте данные в справочнике кодировки."; return false; } mn = StaffDepartmentManagementDao.GetDepartmentManagementByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (mn == null) { error = "Для данной точки не определена дирекция! Проверьте данные в справочнике кодировки."; return false; } StaffDepartmentRPLink rp = StaffDepartmentRPLinkDao.GetDepartmentRPLinkByDeparment(DepartmentDao.GetParentDepartmentWithLevel(dep, dep.ItemLevel.Value - 1)); if (rp == null) { error = "Для данной точки не определена РП-привязка! Проверьте данные в справочнике кодировки."; return false; } entity.DepartmentManagerDetails[0].DepCode = StaffDepartmentRequestDao.GetNewFinDepCode(br, mn, rp); dep.FingradCode = entity.DepartmentManagerDetails[0].DepCode; try { DepartmentDao.SaveAndFlush(dep); } catch (Exception ex) { DepartmentDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } } break; } return true; }
/// <summary> /// Сохраняем данные справочника кодировок управлений. /// </summary> /// <param name="itemToAddEdit"></param> /// <param name="error"></param> /// <returns></returns> public bool SaveStaffDepartmentAdministration(StaffDepartmentAdministrationDto itemToAddEdit, out string error) { error = string.Empty; User curUser = UserDao.Load(AuthenticationService.CurrentUser.Id); StaffDepartmentAdministration entity = itemToAddEdit.aId == 0 ? null : StaffDepartmentAdministrationDao.Load(itemToAddEdit.aId); if (entity == null) { entity = new StaffDepartmentAdministration() { Code = itemToAddEdit.aCode, Name = itemToAddEdit.aName, DepartmentManagement = itemToAddEdit.ManagementId == 0 ? null : StaffDepartmentManagementDao.Get(itemToAddEdit.ManagementId), Department = itemToAddEdit.aDepartmentId == 0 ? null : DepartmentDao.Load(itemToAddEdit.aDepartmentId), Creator = curUser, CreateDate = DateTime.Now }; } else { entity.Code = itemToAddEdit.aCode; entity.Name = itemToAddEdit.aName; entity.DepartmentManagement = itemToAddEdit.ManagementId == 0 ? null : StaffDepartmentManagementDao.Get(itemToAddEdit.ManagementId); entity.Department = itemToAddEdit.aDepartmentId == 0 ? null : DepartmentDao.Load(itemToAddEdit.aDepartmentId); entity.Editor = curUser; entity.EditDate = DateTime.Now; } try { StaffDepartmentAdministrationDao.SaveAndFlush(entity); error = "Данные сохранены!"; } catch (Exception ex) { StaffDepartmentAdministrationDao.RollbackTran(); error = string.Format("Произошла ошибка при сохранении данных! Исключение:{0}", ex.GetBaseException().Message); return false; } return true; }