/// <summary> /// Получает руководителя для подразделени\ /// </summary> /// <param name="dep">подразделение</param> /// <returns>руководитель</returns> private User GetManagerForDepartment(Department dep) { var managers = DepartmentDao.GetDepartmentManagersByDepAndManualRole(dep.Id,4); if (managers != null && managers.Any()) { var level = managers.Max(x => x.Level.Value); managers = managers.Where(x => x.Level.Value == level).ToList(); var mainmanager = managers.Where(x => x.IsMainManager); if (mainmanager != null && mainmanager.Any()) return mainmanager.First(); else return managers.First(); } return null; }
/// <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; }