From 4736ad8a0983f9a4e911dffd7564489a54526b52 Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Wed, 28 Jun 2017 02:01:11 +0200 Subject: [PATCH] =?UTF-8?q?Respecter=20un=20d=C3=A9but=20=C3=A0=20aujourd'?= =?UTF-8?q?hui=20et=20une=20fin=20=C3=A0=20j+14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [WIP] respecter les jours d'ouverture --- Yavsc/Services/GoogleApis/CalendarManager.cs | 28 +++++++++++++++++-- Yavsc/ViewComponents/CalendarViewComponent.cs | 26 ++++++++++------- .../Calendar/DateTimeChooserViewModel.cs | 7 ++++- Yavsc/Views/HairCutCommand/HairCut.cshtml | 6 +--- .../Shared/Components/Calendar/Default.cshtml | 9 ++++-- 5 files changed, 54 insertions(+), 22 deletions(-) diff --git a/Yavsc/Services/GoogleApis/CalendarManager.cs b/Yavsc/Services/GoogleApis/CalendarManager.cs index d55dc6a3..e1770f04 100644 --- a/Yavsc/Services/GoogleApis/CalendarManager.cs +++ b/Yavsc/Services/GoogleApis/CalendarManager.cs @@ -33,6 +33,8 @@ using Google.Apis.Util.Store; namespace Yavsc.Models.Google.Calendar { + using System.Collections.Generic; + using System.Linq; using Models.Google; using Yavsc.Helpers; using Yavsc.Models.Calendar; @@ -176,15 +178,35 @@ namespace Yavsc.Models.Google.Calendar } public async Task CreateViewModel( string inputId, - string calid, DateTime mindate, DateTime maxdate, string userId) + string calid, DateTime mindate, DateTime maxdate) { + if (calid ==null) return new DateTimeChooserViewModel { + InputId = inputId, + MinDate = mindate, + MaxDate = maxdate + }; + var eventList = await GetCalendarAsync(calid, mindate, maxdate); - + List free = new List (); + List busy = new List (); + + foreach (var ev in eventList.items) + { + if (ev.transparency == "transparent" ) + { + free.Add(new Period { Start = ev.start.datetime, End = ev.end.datetime }); + } + else busy.Add(new Period { Start = ev.start.datetime, End = ev.end.datetime }); + } + return new DateTimeChooserViewModel { InputId = inputId, MinDate = mindate, MaxDate = maxdate, - DisabledTimeIntervals = null + Free = free.ToArray(), + Busy = busy.ToArray(), + FreeDates = free.SelectMany( p => new string [] { p.Start.ToString("DD/mm/yyyy"), p.End.ToString("DD/mm/yyyy") }).Distinct().ToArray(), + BusyDates = busy.SelectMany( p => new string [] { p.Start.ToString("DD/mm/yyyy"), p.End.ToString("DD/mm/yyyy") }).Distinct().ToArray() }; } } diff --git a/Yavsc/ViewComponents/CalendarViewComponent.cs b/Yavsc/ViewComponents/CalendarViewComponent.cs index b7c7b24c..30cfa459 100644 --- a/Yavsc/ViewComponents/CalendarViewComponent.cs +++ b/Yavsc/ViewComponents/CalendarViewComponent.cs @@ -3,7 +3,6 @@ using System.Threading.Tasks; using Microsoft.AspNet.Mvc; using Yavsc.Models; using Yavsc.Models.Calendar; -using Yavsc.ViewModels.Calendar; namespace Yavsc.ViewComponents { @@ -21,24 +20,31 @@ namespace Yavsc.ViewComponents } public async Task InvokeAsync ( - string templateName, string htmlFieldName, - string calId) + string calId = null) { var minDate = DateTime.Now; var maxDate = minDate.AddDays(20); - var cal = await _manager.GetCalendarAsync( + var model = await _manager.CreateViewModel( + htmlFieldName, calId, minDate, maxDate ); - ViewData["Calendar"] = cal; + return View(model); + } + public async Task InvokeAsync ( + string htmlFieldName) + { + var minDate = DateTime.Now; + var maxDate = minDate.AddDays(20); - return View(templateName, new DateTimeChooserViewModel { - InputId = htmlFieldName, - MinDate = minDate, - MaxDate = maxDate - }); + var model = await _manager.CreateViewModel( + htmlFieldName, + null, minDate, maxDate + ); + + return View(model); } } } \ No newline at end of file diff --git a/Yavsc/ViewModels/Calendar/DateTimeChooserViewModel.cs b/Yavsc/ViewModels/Calendar/DateTimeChooserViewModel.cs index 87d29b77..46d2fe99 100644 --- a/Yavsc/ViewModels/Calendar/DateTimeChooserViewModel.cs +++ b/Yavsc/ViewModels/Calendar/DateTimeChooserViewModel.cs @@ -9,6 +9,11 @@ namespace Yavsc.ViewModels.Calendar public string InputId { get; set; } public DateTime MinDate { get; set; } public DateTime MaxDate { get; set; } - public Period [] DisabledTimeIntervals { get; set; } + public Period [] Busy { get; set; } + public Period [] Free { get; set; } + + public string [] FreeDates { get ; set; } + public string [] BusyDates { get ; set; } + } } diff --git a/Yavsc/Views/HairCutCommand/HairCut.cshtml b/Yavsc/Views/HairCutCommand/HairCut.cshtml index 46027d74..72536cc6 100644 --- a/Yavsc/Views/HairCutCommand/HairCut.cshtml +++ b/Yavsc/Views/HairCutCommand/HairCut.cshtml @@ -338,11 +338,7 @@
- @await Component.InvokeAsync( - "Calendar", - "Default", - "EventDate", - Model.PerformerProfile.Performer.DedicatedGoogleCalendar) + @await Component.InvokeAsync("Calendar","EventDate", Model.PerformerProfile.Performer.DedicatedGoogleCalendar)
diff --git a/Yavsc/Views/Shared/Components/Calendar/Default.cshtml b/Yavsc/Views/Shared/Components/Calendar/Default.cshtml index ee1a1196..cc2e6bf0 100644 --- a/Yavsc/Views/Shared/Components/Calendar/Default.cshtml +++ b/Yavsc/Views/Shared/Components/Calendar/Default.cshtml @@ -1,11 +1,14 @@ @model DateTimeChooserViewModel -
- +
+