Inheritance: UIX.Views.IDecorable, UIX.Views.IValidatable, INull, IObjectState, IComparable
 /// <summary>
 /// Добавление нового отдела
 /// </summary>
 /// <param name="managerDepartment">Руководящий отдел</param>
 /// <param name="departmentType">Тип отдела</param>
 /// <returns></returns>
 public Dep CreateNewDepartment(Dep managerDepartment, DepartmentType departmentType)
 {
     Dep result = new Dep();
     result.ManagerDepartment = managerDepartment;
     result.DepartmentType = departmentType;
     result.DepartmentName = "Не указано";
     result.DepartmentSmallName = "Не указано";
     Deps.InsertOnSubmit(result);
     return result;
 }
Esempio n. 2
0
 /// <summary>
 /// При создании модели перезаписывает отдел
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void Model_Created(object sender, EventArgs e)
 {
     if (department != null)
         if (KadrController.Instance.Model.Deps.Where(dep => dep.id == department.id).Count()>0)
             department = KadrController.Instance.Model.Deps.Where(dep => dep.id == department.id).First() as Dep;
 }
Esempio n. 3
0
 /// <summary>
 /// Находит самый верхний узловой объект
 /// </summary>
 /// <param name="department"></param>
 /// <returns></returns>
 private static Dep FindMainDep(Dep department)
 {
     //находим узловой-отдел (самого верхнего уровня)
     Dep rootDep;
     rootDep = department;
     while (rootDep.ManagerDepartment != null)
     {
         rootDep = rootDep.ManagerDepartment;
     }
     return rootDep;
 }
Esempio n. 4
0
 public DepartmentDecorator(Dep department)
 {
     this.department = department;
 }
Esempio n. 5
0
        /// <summary>
        /// Создает (пересоздает) записи табелей для определенного отдела
        /// </summary>
        /// <param name="dep">Отдел</param>
        public void CreateTimeSheetRecords(Dep dep)
        {
            //получаем список сотрyдников отдела за период
            IEnumerable<GetFactStaffForTimeSheetResult> DepStaff = GetStaffByPeriod(dep);

            IEnumerable<TimeSheetFSWorkingDay> InsertedTSRecords = null;

            DeleteDepsTShRecords(dep);

            InsertedTSRecords = DepStaff.Select(depSt =>
                new TimeSheetFSWorkingDay()
                {
                    TimeSheet = this,
                    idFactStaff = Convert.ToInt32(depSt.idFactStaff),
                    StaffCount = Convert.ToDecimal(depSt.StaffCount),
                    WorkingDaysCount = this.TimeSheetWorkingDayCount
                }).Distinct();

            KadrController.Instance.Model.TimeSheetFSWorkingDays.InsertAllOnSubmit(InsertedTSRecords);
            KadrController.Instance.SubmitChanges();
        }
Esempio n. 6
0
        /// <summary>
        /// Обновляет записи табеля для определенного отдела
        /// </summary>
        /// <param name="dep">Отдел</param>
        public void UpdateDepartmentsTimeSheet(Dep dep)
        {
            //получаем список сотрyдников отдела за период
            IEnumerable<GetFactStaffForTimeSheetResult> DepStaff = GetStaffByPeriod(dep).ToArray();

            //удаляем записи, сотрудники которых не работали в периоде
            IEnumerable<TimeSheetFSWorkingDay> RecordsForDelete = GetStaffRecordsForDelete(DepStaff, dep);
            if (RecordsForDelete.Count() > 0)
            {
                KadrController.Instance.Model.TimeSheetFSWorkingDays.DeleteAllOnSubmit(RecordsForDelete);
            }
            KadrController.Instance.Model.SubmitChanges();

            IEnumerable<TimeSheetFSWorkingDay> RecordsForInsert = GetStaffRecordsForInsert(DepStaff);

            KadrController.Instance.Model.TimeSheetFSWorkingDays.InsertAllOnSubmit(RecordsForInsert);
            KadrController.Instance.SubmitChanges();
        }
Esempio n. 7
0
        /// <summary>
        /// Возвращает список записей табеля для удаления (строки не соответствуют штатке)
        /// </summary>
        /// <param name="staff">Общий список штатных единиц</param>
        /// <returns></returns>
        public IEnumerable<TimeSheetFSWorkingDay> GetStaffRecordsForDelete(IEnumerable<GetFactStaffForTimeSheetResult> staff, Dep dep)
        {
            IEnumerable<TimeSheetFSWorkingDay> StaffTShRecords = DepsTShRecords.Invoke(KadrController.Instance.Model, dep.id, id).ToArray();

                    IEnumerable<TimeSheetFSWorkingDay> RecordsForDelete = StaffTShRecords.Where(tsRec => !tsRec.IsClosed).ToArray();

            return RecordsForDelete;
        }
Esempio n. 8
0
 /// <summary>
 /// Возвращает список сотрудников отдела для табеля
 /// </summary>
 /// <param name="dep">Отдел</param>
 /// <returns></returns>
 public IEnumerable<GetFactStaffForTimeSheetResult> GetStaffByPeriod(Dep dep)
 {
     if ((dep==null) || (dep.IsNull()))
         return GetStaffByPeriod().Where(st => st.idTypeWork != ExceptWorkType).ToArray();
     else
         return GetStaffByPeriod().Where(st => st.idTypeWork!=ExceptWorkType).Where(staff => (staff.idDepartment == dep.id)).ToArray();
 }
Esempio n. 9
0
 /// <summary>
 /// Возвращает список записей табеля, относящихся к отделy
 /// </summary>
 /// <param name="deps">Oтдел</param>
 public IEnumerable<TimeSheetFSWorkingDay> GetDepsTShRecords(Dep dep)
 {
     if (dep == null)
         return TimeSheetFSWorkingDays;
     else
         return
             KadrController.Instance.Model.TimeSheetFSWorkingDays.Where(tswd =>
                (tswd.TimeSheet == this) &&
                (tswd.FactStaff.PlanStaff.Dep == dep));
 }
Esempio n. 10
0
 /// <summary>
 /// Удаляет записи табеля, относящиеся к отделe
 /// </summary>
 /// <param name="dep">Oтдел</param>
 public void DeleteDepsTShRecords(Dep dep)
 {
     IEnumerable<TimeSheetFSWorkingDay> DepTimeSheetRecords = GetDepsTShRecords(dep);
     if (DepTimeSheetRecords.Count() > 0)
     {
         KadrController.Instance.Model.TimeSheetFSWorkingDays.DeleteAllOnSubmit(DepTimeSheetRecords);
     }
 }
Esempio n. 11
0
        /*private void tsbCreateTimeSheet_Click(object sender, EventArgs e)
           {
            if (cbTimeSheet.SelectedItem == null)
            {
                MessageBox.Show("Выберите табель!");
                return;
            }

            if ((cbTimeSheet.SelectedItem as TimeSheet).TimeSheetFSWorkingDays.Where(tsRecord => tsRecord.FactStaff.PlanStaff.Department == Department).Count() > 0)
            {
                if (MessageBox.Show("При пересоздании табеля все ваши изменения будут потеряны. Вы хотите продолжить?", "АИС Штатное расписание", MessageBoxButtons.OKCancel)
                    == DialogResult.Cancel)
                {
                    return;
                }
            }

            (cbTimeSheet.SelectedItem as TimeSheet).AddDepartmentsTShRecords(Department);
            LoadTimeSheetRecords();
        }*/
        public IEnumerable<Dep> GetDepList(Dep department)
        {
            return KadrController.Instance.Model.Deps.Where(dep => dep == department);
        }
Esempio n. 12
0
        /// <summary>
        /// Возвращает список записей табеля для удаления (строки не соответствуют штатке)
        /// </summary>
        /// <param name="staff">Общий список штатных единиц</param>
        /// <returns></returns>
        public IEnumerable<TimeSheetFSWorkingDay> GetStaffRecordsForDelete(IEnumerable<GetFactStaffForTimeSheetResult> staff, Dep dep)
        {
            IEnumerable<TimeSheetFSWorkingDay> StaffTShRecords = DepsTShRecords.Invoke(KadrController.Instance.Model, dep.id, id).ToArray();

                    IEnumerable<TimeSheetFSWorkingDay> RecordsForDelete = StaffTShRecords.Except(
                (from st in GetInsertedStaff(staff)
                 join tsRec in TimeSheetFSWorkingDays
                   on new { id = (int?)st.idFactStaff, StaffCount = (double?)st.StaffCount }
                   equals new { id = (int?)tsRec.idFactStaff, StaffCount = (double?)tsRec.StaffCount }
                 select new
                 {
                     TSRecord = tsRec
                 }).Select(st => st.TSRecord)).ToArray();

            return RecordsForDelete;
        }