Respecter un début à aujourd'hui et une fin à j+14
[WIP] respecter les jours d'ouverture
This commit is contained in:
@ -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<DateTimeChooserViewModel> 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<Period> free = new List<Period> ();
|
||||
List<Period> busy = new List<Period> ();
|
||||
|
||||
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()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -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<IViewComponentResult> 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<IViewComponentResult> 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);
|
||||
}
|
||||
}
|
||||
}
|
@ -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; }
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -338,11 +338,7 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class='col-sm-6'>
|
||||
@await Component.InvokeAsync(
|
||||
"Calendar",
|
||||
"Default",
|
||||
"EventDate",
|
||||
Model.PerformerProfile.Performer.DedicatedGoogleCalendar)
|
||||
@await Component.InvokeAsync("Calendar","EventDate", Model.PerformerProfile.Performer.DedicatedGoogleCalendar)
|
||||
|
||||
</div>
|
||||
<span asp-validation-for="EventDate" class="text-danger">
|
||||
|
@ -1,11 +1,14 @@
|
||||
@model DateTimeChooserViewModel
|
||||
|
||||
<script>
|
||||
var events = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewData["Calendar"]));
|
||||
var free = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.FreeDates));
|
||||
var busy = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.BusyDates));
|
||||
</script>
|
||||
|
||||
<div class='input-group date'>
|
||||
<input class="form-control" name="@Model.InputId" />
|
||||
<div class='input-group date' >
|
||||
<input data-date-min-date="@Model.MinDate.ToString("MM/dd/yyyy")"
|
||||
data-date-max-date="@Model.MaxDate.ToString("MM/dd/yyyy")" data-date-enable-dates="free"
|
||||
class="form-control " name="@Model.InputId" id="@Model.InputId" />
|
||||
<span class="input-group-addon">
|
||||
<span class="glyphicon glyphicon-calendar"></span>
|
||||
</span>
|
||||
|
Reference in New Issue
Block a user