Skip to content

Commit

Permalink
fix: Schedules View, Create,
Browse files Browse the repository at this point in the history
  • Loading branch information
anhdtn2403 committed Jul 21, 2024
1 parent 2c22d54 commit 9182892
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 40 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ private List<TimeSlot> GenerateTimeSlots(int workTimeId)

// Retrieve the matching TimeSlots
return _context.TimeSlots
.Where(ts => ts.StartTime >= startTime && ts.EndTime <= endTime).ToList();
.Where(ts => ts.StartTime >= startTime && ts.EndTime <= endTime && ts.ID != 1 && ts.ID != 2).ToList();

}
#endregion
Expand Down Expand Up @@ -521,6 +521,17 @@ public IActionResult Create()
{ // Check if session has expired, log out
return RedirectToAction("Logout", "ManagerAccount", new { area = "Manager" });
}
//---------------------------------------------------
//Generate 2 list timeSlot dựa trên WorkTime Sáng vs Chiều
var clinic = _context.Clinics.Include(c => c.AmWorkTimes).Include(c => c.PmWorkTimes).FirstOrDefault(m => m.ID == clinicId);
var amID = clinic.AmWorkTimeID;
var pmID = clinic.PmWorkTimeID;
List<TimeSlot> amTimeSlots = GenerateTimeSlots(amID);
List<TimeSlot> pmTimeSlots = GenerateTimeSlots(pmID);
ViewBag.AmTimeSlots = amTimeSlots;
ViewBag.PmTimeSlots = pmTimeSlots;

//--------------------------------------------------
var dentists = _context.Dentists
.Join(_context.Accounts,
dentist => dentist.AccountID,
Expand Down Expand Up @@ -564,8 +575,18 @@ public async Task<IActionResult> Create([Bind("DentistIDs, Dates, TimeSlots")] S
.ToList();

ViewData["DentistID"] = new SelectList(dentists.Where(d => d.ClinicID == clinicId && d.Status == "Hoạt Động"), "DentistID", "FullName");
//---------------------------------------------------------------------------------------------------------------------------------------
if (schedule.DentistIDs.Count == 0)
//---------------------------------------------------
//Generate 2 list timeSlot dựa trên WorkTime Sáng vs Chiều
var clinic = _context.Clinics.Include(c => c.AmWorkTimes).Include(c => c.PmWorkTimes).FirstOrDefault(m => m.ID == clinicId);
var amID = clinic.AmWorkTimeID;
var pmID = clinic.PmWorkTimeID;
List<TimeSlot> amTimeSlots = GenerateTimeSlots(amID);
List<TimeSlot> pmTimeSlots = GenerateTimeSlots(pmID);
ViewBag.AmTimeSlots = amTimeSlots;
ViewBag.PmTimeSlots = pmTimeSlots;

//-----------------------------------------------------------------------------
if (schedule.DentistIDs.Count == 0)
{
TempData["ToastMessageFailTempData"] = "Bạn chưa chọn nha sĩ nào.";
return View(schedule);
Expand All @@ -591,7 +612,7 @@ public async Task<IActionResult> Create([Bind("DentistIDs, Dates, TimeSlots")] S
foreach (var slot in schedule.TimeSlots)
{
var existSchedule = await _context.Schedules.FirstOrDefaultAsync(
a => a.DentistID == dentist && a.Date == date && a.TimeSlotID == slot);
a => a.DentistID == dentist && a.Date == date && a.TimeSlotID == slot && a.ScheduleStatus != "Đã Hủy");

if (existSchedule == null)
{
Expand Down Expand Up @@ -727,7 +748,7 @@ public async Task<IActionResult> EditStatusTo_ConTrong(int? dentistId, DateOnly?
public async Task<IActionResult> Delete(int? dentistId, DateTime? date)
{
var scheduleSubList = _context.Schedules.Where(p =>
p.DentistID == dentistId && p.Date == DateOnly.FromDateTime(date.Value) && p.ScheduleStatus != "Đã Đặt" && p.ScheduleStatus != "Đã Hủy" && p.TimeSlotID != 31);
p.DentistID == dentistId && p.Date == DateOnly.FromDateTime(date.Value) && p.ScheduleStatus != "Đã Đặt" && p.ScheduleStatus != "Đã Hủy" && p.TimeSlotID != 32);
if (scheduleSubList.Any())
{
_context.Schedules.RemoveRange(scheduleSubList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,19 +168,58 @@
</div>

<div style="height:15px"></div>

<!-- ========== CHỌN KHUNG GIỜ ========== -->
<input type="hidden" asp-for="TimeSlots" value="@Json.Serialize(Model.TimeSlots)" />
<div class="col-md-12">
<label for="timeInterval" class="sub-title">Chọn khoảng thời gian:</label>
<select id="timeInterval" style="visibility:hidden">
<option value="" disabled selected>

</option>
<option value="30" selected>30 Minutes</option>
<option value="60">1 Hour</option>
</select>

<div id="checkboxContainer"></div> @* List<int> TimeSlots đc lưu trong checkbox.name=TimeSlots *@
<label class="sub-title">Chọn khoảng thời gian:</label>
<br/>
<label class="sub-title">Sáng:</label>
<div class="row">
@{
var sangSlots = ViewBag.AmTimeSlots;
}
@for (int i = 0; i < sangSlots.Count; i += 3)
{
<div class="col-md-4">
@for (int j = i; j < i + 3 && j < sangSlots.Count; j++)
{

var slot = sangSlots[j];
var isChecked = Model.TimeSlots != null && Model.TimeSlots.Contains(slot.ID);
<div class="form-check">
<input class="form-check-input" type="checkbox" name="TimeSlots" value="@slot.ID" id="[email protected]" @(isChecked ? "checked" : "")>
<label class="form-check-label" for="[email protected]">
@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")
</label>
</div>
}
</div>
}
</div>
<label class="sub-title">Chiều:</label>
<div class="row">
@{
var chieuSlots = ViewBag.PmTimeSlots;
}
@for (int i = 0; i < chieuSlots.Count; i += 3)
{
<div class="col-md-4">
@for (int j = i; j < i + 3 && j < chieuSlots.Count; j++)
{

var slot = chieuSlots[j];
var isChecked = Model.TimeSlots != null && Model.TimeSlots.Contains(slot.ID);
<div class="form-check">
<input class="form-check-input" type="checkbox" name="TimeSlots" value="@slot.ID" id="[email protected]" @(isChecked ? "checked" : "")>
<label class="form-check-label" for="[email protected]">
@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")
</label>
</div>
}
</div>
}
</div>
</div>
<div class="col-md-12 text-end">
<button type="submit" class="btn">Tạo mới</button>
Expand All @@ -190,7 +229,7 @@
<br />

@section Scripts {
<script src="~/assets/js/timeinterval2.js"></script>
@* <script src="~/assets/js/timeinterval2.js"></script> *@
<script src="~/assets/js/mobiscroll.javascript.min.js"></script>
<!-- ========== MOBISCROLL SCHEDULE ========== -->
<script src="~/assets/js/mobiscroll-calendar3.js"></script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,14 +199,6 @@
{
list.Add(slot.ID, ("Đã Đặt", time));
}
else if (slotIDs_Nghi.Contains(slot.ID))
{
list.Add(slot.ID, ("Nghỉ", time));
}
else if (slotIDs_ConTrong.Contains(slot.ID))
{
list.Add(slot.ID, ("Còn Trống", time));
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -345,14 +345,6 @@
{
<p class="time_Dat">@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")</p>
}
else if (slotIDs_Nghi.Contains(slot.ID))
{
<p class="time_Nghi">@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")</p>
}
else if (slotIDs_ConTrong.Contains(slot.ID))
{
<p class="time_ChuaDat">@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")</p>
}
}
}
}
Expand Down Expand Up @@ -384,14 +376,6 @@
<p class="time_ChuaDat">@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")</p>
}
}
else
{
if (!slotIDs_DaDat.Contains(slot.ID) && !slotIDs_Nghi.Contains(slot.ID)
&& (slotIDs_ConTrong.Contains(slot.ID)))
{
<p class="time_ChuaDat">@slot.StartTime.ToString("HH:mm") - @slot.EndTime.ToString("HH:mm")</p>
}
}
}
}
}
Expand Down

0 comments on commit 9182892

Please sign in to comment.