コード例 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Created,StartDateTime,EndDateTime,JobType,JobCapacity")] BarcoJob barcoJob)
        {
            if (id != barcoJob.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(barcoJob);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!BarcoJobExists(barcoJob.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(barcoJob));
        }
コード例 #2
0
        public static BarcoMember GetMemberForJob(BarcoJob barcoJob, List <BarcoMember> membersPool)
        {
            BarcoMember selectedMember = null;

            foreach (var member in membersPool)
            {
                bool memberAlreadyInJob = false;
                foreach (var shift in barcoJob.Shifts)
                {
                    if (shift.BarcoMember.UserName == member.UserName)
                    {
                        memberAlreadyInJob = true;
                        break;
                    }
                }
                if (!memberAlreadyInJob)
                {
                    selectedMember = member;
                }
            }
            if (selectedMember != null)
            {
                membersPool.Remove(selectedMember);
            }
            return(selectedMember);
        }
コード例 #3
0
        public async Task <IActionResult> Create([Bind("Id,WorkPackageId,Created,StartDateTime,EndDateTime,JobType,JobCapacity")] BarcoJob barcoJob)
        {
            if (ModelState.IsValid)
            {
                _context.Add(barcoJob);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(barcoJob));
        }
コード例 #4
0
ファイル: BarcoJobViewModel.cs プロジェクト: Temitope-A/barco
 public BarcoJobViewModel(BarcoJob job)
 {
     Id                   = job.Id;
     Date                 = job.StartDateTime.Day;
     MonthCode            = job.StartDateTime.ToString("MMM");
     Shifts               = job.Shifts.Where(s => s.ShiftStatus != ShiftStatus.Cancelled).Select(s => new BarcoShiftViewModel(s)).ToList();
     NumberOfFilledShifts = Shifts.Count;
     JobCapacity          = job.JobCapacity;
     JobType              = job.JobType;
     OpeningTime          = job.StartDateTime.ToString("HH:mm");
     ClosingTime          = job.EndDateTime.ToString("HH:mm");
 }
コード例 #5
0
        public DaySummaryViewModel(DateTime date, BarcoJob job)
        {
            Date      = date.Day;
            MonthCode = date.ToString("MMM");

            if (job == null)
            {
                IsOpen = false;
            }
            else
            {
                IsOpen  = true;
                JobType = job.JobType;
                Shifts  = job.Shifts.Select(s => new BarcoShiftViewModel(s)).ToList();
            }
        }
コード例 #6
0
ファイル: ShiftFactory.cs プロジェクト: Temitope-A/barco
        public static BarcoShift AddShift(BarcoJob job, BarcoMember member)
        {
            if (job.Shifts.Count < job.JobCapacity)
            {
                var shift = new BarcoShift
                {
                    BarcoMember = member,
                    ShiftStatus = ShiftStatus.Planned,
                    BarcoJob    = job
                };
                job.Shifts.Add(shift);

                return(shift);
            }
            else
            {
                return(null);
            }
        }
コード例 #7
0
        private void PushShift(BarcoShift shift, BarcoJob job)
        {
            var dueInterval = TimeSpan.FromHours(10);

            if (shift.ShiftStatus == ShiftStatus.Planned && DateTime.Now > job.StartDateTime - dueInterval)
            {
                //notify
                NotifyDueShifts(shift);
                shift.ShiftStatus = ShiftStatus.Notified;
            }
            else if (shift.ShiftStatus == ShiftStatus.Started && job.EndDateTime < DateTime.Now)
            {
                //close it
                shift.ShiftStatus = ShiftStatus.Worked;
            }
            else if (shift.ShiftStatus == ShiftStatus.Planned && job.EndDateTime < DateTime.Now)
            {
                //fail it
                shift.ShiftStatus = ShiftStatus.UnWorked;
            }
        }
コード例 #8
0
 public BarcoShiftViewModel(BarcoShift shift, BarcoJob job) : this(shift)
 {
     Date      = job.StartDateTime.Day;
     MonthCode = job.StartDateTime.ToString("MMM");
 }