コード例 #1
0
ファイル: StaffMovementsBl.cs プロジェクト: andreyu/Reports
 /// <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;
 }
コード例 #2
0
ファイル: StaffListBl.cs プロジェクト: andreyu/Reports
        /// <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;
        }