示例#1
0
        public bool IsUserSignedUpForShiftDay(ShiftDay shiftDay, string userId)
        {
            var signups = GetShiftSignpsForShiftDay(shiftDay.ShiftDayId);

            if (shiftDay.Shift.Personnel != null && shiftDay.Shift.Personnel.Any())
            {
                if (shiftDay.Shift.Personnel.Any(x => x.UserId == userId))
                {
                    return(true);
                }
            }

            if (signups == null || !signups.Any())
            {
                return(false);
            }

            foreach (var shiftSignup in signups)
            {
                if (shiftSignup.UserId == userId)
                {
                    return(true);
                }

                if (shiftSignup.Trade != null && shiftSignup.Trade.TargetShiftSignup != null &&
                    shiftSignup.Trade.TargetShiftSignup.UserId == userId)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#2
0
        public ShiftDayDTO InsertShiftDayDetail(ShiftDayDTO detail)
        {
            ShiftDay dataToInsert = new ShiftDay();

            dataToInsert = ShiftDayRequestFormatter.ConvertRespondentInfoFromDTO(detail);
            return(ShiftDayRequestFormatter.ConvertRespondentInfoToDTO(_unitOfWork.ShiftDayRepository.Create(dataToInsert)));
            // return null;
        }
示例#3
0
        public int UpdateShiftDetail(ShiftDayDTO detail)
        {
            ShiftDay dataToUpdate = new ShiftDay();

            dataToUpdate = ShiftDayRequestFormatter.ConvertRespondentInfoFromDTO(detail);
            var res = _unitOfWork.ShiftDayRepository.Update(dataToUpdate);

            _unitOfWork.Save();
            return(res);
            // return 0;
        }
示例#4
0
 public static ShiftDayDTO ConvertRespondentInfoToDTO(ShiftDay shift)
 {
     Mapper.CreateMap <ShiftDay, ShiftDayDTO>().ConvertUsing(
         m =>
     {
         return(new ShiftDayDTO
         {
             DayName = m.DayName,
             DayNumber = m.DayNumber,
             DayShiftId = m.DayShiftId,
             DayStartTime = m.DayStartTime,
             DayEndTime = m.DayEndTime,
             DayWeekend = m.DayWeekend,
             DayWorkingMinute = m.DayWorkingMinute,
             DayDual = m.DayDual
         });
     });
     return(Mapper.Map <ShiftDay, ShiftDayDTO>(shift));
 }
示例#5
0
        public async Task <bool> IsShiftDayFilledWithObjAsync(Shift shift, ShiftDay shiftDay)
        {
            bool isFilled    = true;
            var  shiftGroups = await GetShiftDayNeedsObjAsync(shift, shiftDay);

            if (shiftGroups == null)
            {
                return(true);
            }

            foreach (var group in shiftGroups)
            {
                foreach (var role in group.Value)
                {
                    if (role.Value > 0)
                    {
                        isFilled = false;
                    }
                }
            }

            return(isFilled);
        }
示例#6
0
        public async Task <Dictionary <int, Dictionary <int, int> > > GetShiftDayNeedsObjAsync(Shift shift, ShiftDay shiftDay)
        {
            //var shiftDay = await _shiftDaysRepository.GetShiftDayByIdAsync(shiftDayId);
            var shiftGroups = new Dictionary <int, Dictionary <int, int> >();

            if (shiftDay != null)
            {
                if (shiftDay.Shift.AssignmentType == (int)ShiftAssignmentTypes.Assigned)
                {
                    return(null);
                }

                //shiftDay.Shift.Groups = (await _shiftGroupsRepository.GetShiftGroupsByShiftIdAsync(shiftDay.ShiftId)).ToList();
                if (shiftDay.Shift.Groups == null || shiftDay.Shift.Groups.Count() <= 0)
                {
                    return(null);
                }

                var shiftSignups =
                    (await _shiftSignupRepository.GetAllShiftSignupsByShiftIdAndDateAsync(shiftDay.ShiftId,
                                                                                          shiftDay.Day)).ToList();


                foreach (var group in shiftDay.Shift.Groups)
                {
                    var roleRequirements = new Dictionary <int, int>();

                    if (group.Roles != null && group.Roles.Any())
                    {
                        foreach (var role in group.Roles)
                        {
                            roleRequirements.Add(role.PersonnelRoleId, role.Required);
                        }
                    }

                    if (shiftSignups != null && shiftSignups.Any())
                    {
                        var groupSignups = shiftSignups.Where(x => x.DepartmentGroupId == group.DepartmentGroupId);

                        foreach (var signup in groupSignups)
                        {
                            var roles = await _personnelRolesService.GetRolesForUserAsync(signup.UserId, shiftDay.Shift.DepartmentId);

                            foreach (var personnelRole in roles)
                            {
                                if (roleRequirements.ContainsKey(personnelRole.PersonnelRoleId))
                                {
                                    roleRequirements[personnelRole.PersonnelRoleId]--;
                                }
                            }
                        }
                    }

                    shiftGroups.Add(group.DepartmentGroupId, roleRequirements);
                }
            }

            return(shiftGroups);
        }
示例#7
0
 public ShiftDayService(IUnitOfWork unitOfWork = null)
 {
     _unitOfWork = unitOfWork ?? new UnitOfWork();
     _shiftDay   = new ShiftDay();
 }
示例#8
0
        public ActionResult ShiftMapping(ShiftMapViewModel model)
        {
            if (ModelState.ContainsKey("AssignedDayData[0].ShiftType"))
            {
                ModelState["AssignedDayData[0].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[1].ShiftType"))
            {
                ModelState["AssignedDayData[1].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[2].ShiftType"))
            {
                ModelState["AssignedDayData[2].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[3].ShiftType"))
            {
                ModelState["AssignedDayData[3].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[4].ShiftType"))
            {
                ModelState["AssignedDayData[4].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[5].ShiftType"))
            {
                ModelState["AssignedDayData[5].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDayData[6].ShiftType"))
            {
                ModelState["AssignedDayData[6].ShiftType"].Errors.Clear();
            }
            if (ModelState.ContainsKey("AssignedDateData.ShiftType"))
            {
                ModelState["AssignedDateData.ShiftType"].Errors.Clear();
            }

            if (ModelState.IsValid)
            {
                if (model.Doctor.Daywise)
                {
                    foreach (var item in model.AssignedDayData)
                    {
                        if (item.IsSelected)
                        {
                            var shiftType = db.ShiftDays.Where(m => m.Doctor_ID == model.Doctor.ID && m.WeekDays_ID == item.Day ).FirstOrDefault();
                            if(shiftType != null)
                            {
                                if(item.ShiftType != 0)
                                {
                                    shiftType.ShiftType_ID = item.ShiftType;
                                }
                                if (item.StartTime != "")
                                {
                                    shiftType.StartTime = item.StartTime;
                                }
                                if (item.EndTime != "")
                                {
                                    shiftType.EndTime = item.EndTime;
                                }
                                shiftType.Status = true;

                                db.Entry(shiftType).State = EntityState.Modified;
                            }
                            else
                            {
                                ShiftDay dayShift = new ShiftDay
                                {
                                    WeekDays_ID = item.Day,
                                    StartTime = item.StartTime,
                                    EndTime = item.EndTime,
                                    ShiftType_ID = item.ShiftType,
                                    Doctor_ID = model.Doctor.ID,
                                    Status = true
                                };

                                db.ShiftDays.Add(dayShift);
                            }

                            db.SaveChanges();
                        }
                        else
                        {
                            var shiftType = db.ShiftDays.Where(m => m.Doctor_ID == model.Doctor.ID && m.WeekDays_ID == item.Day).FirstOrDefault();
                            if(shiftType != null)
                            {
                                shiftType.Status = false;
                                db.Entry(shiftType).State = EntityState.Modified;
                                db.SaveChanges();
                            }
                        }
                    }

                    return RedirectToAction("Index", "Doctors");
                }
                else
                {
                    foreach (var item in model.AssignedDateData)
                    {
                        ShiftDate dateShift = new ShiftDate { DayAvailable = item.DateAvailable, StartTime = item.StartTime, EndTime = item.EndTime, Doctor_ID = model.Doctor.ID, ShiftType_ID = item.ShiftType, Status = true };
                        db.ShiftDates.Add(dateShift);
                        db.SaveChanges();
                    }
                    return RedirectToAction("Index", "Doctors");
                }

            }

            ViewBag.Shifts = new SelectList(db.ShiftTypes, "ID", "Name");
            return View(model);
        }