コード例 #1
0
        public int retrieveNewOrAvailableDisbursementIdForDept(int deliveredEmployeeId, int receivedEmployeeId)
        {
            Disbursement availableDisbursement = disbursementRepo.FindBy(x => x.DeliveredEmployeeId == deliveredEmployeeId && x.ReceivedEmployeeId == receivedEmployeeId && x.Signature == null).FirstOrDefault();;
            int          targetDisbursementId;

            if (availableDisbursement == null)
            {
                Disbursement newDisbursement = new Disbursement();
                newDisbursement.DeliveredEmployeeId = deliveredEmployeeId;
                newDisbursement.ReceivedEmployeeId  = receivedEmployeeId;
                newDisbursement.AdHoc = false;
                int deptId = (int)employeeRepo.FindOneBy(x => x.Id == receivedEmployeeId).DepartmentId;
                int cPId   = (int)departmentRepo.FindOneBy(x => x.Id == deptId).CollectionPointId;
                newDisbursement.CollectionPoint = collectionPointRepo.FindById(cPId).NameTime;
                DateTime      tomorrow        = DateTime.Today.AddDays(1);
                int           daysUntilMonday = ((int)DayOfWeek.Monday - (int)tomorrow.DayOfWeek + 7) % 7;
                DateTime      nextMonday      = tomorrow.AddDays(daysUntilMonday);
                PublicHoliday holidayConflict = publicHolidayRepo.FindOneBy(x => x.Date == nextMonday);

                while (holidayConflict != null)
                {
                    daysUntilMonday = daysUntilMonday + 7;
                    nextMonday      = tomorrow.AddDays(daysUntilMonday);
                    holidayConflict = publicHolidayRepo.FindOneBy(x => x.Date == nextMonday);
                }

                newDisbursement.DeliveryDateTime = nextMonday;
                newDisbursement      = disbursementRepo.Create(newDisbursement);
                targetDisbursementId = disbursementRepo.FindOneBy(x => x.DeliveredEmployeeId == deliveredEmployeeId && x.ReceivedEmployeeId == receivedEmployeeId && x.Signature == null).Id;
            }
            else
            {
                targetDisbursementId = availableDisbursement.Id;
            }
            return(targetDisbursementId);
        }