31
loading...
This website collects cookies to deliver better user experience
public class EventModel
{
public int Id { get; set; }
public string Subject { get; set; }
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
public string StartTimezone { get; set; }
public string EndTimezone { get; set; }
public string Location { get; set; }
public string Description { get; set; }
public bool? IsAllDay { get; set; }
public bool? IsBlock { get; set; }
public bool? IsReadOnly { get; set; }
public int? FollowingID { get; set; }
public int? RecurrenceID { get; set; }
public string RecurrenceRule { get; set; }
public string RecurrenceException { get; set; }
public int? OwnerId { get; set; }
}
public class ResourceModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Color { get; set; }
}
public class SchedulerContext : DbContext
{
public SchedulerContext(DbContextOptions<SchedulerContext> options) : base(options) { }
public virtual DbSet<EventModel> EventModels { get; set; }
public virtual DbSet<ResourceModel> ResourceModels { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<EventModel>().ToTable("EventData");
modelBuilder.Entity<ResourceModel>().ToTable("ResourceData");
}
}
services.AddDbContext<SchedulerContext>(context => context.UseSqlServer("<database connection string>"));
[Route("api/[controller]")]
[ApiController]
public class ScheduleController : ControllerBase
{
private readonly SchedulerContext _context;
public ScheduleController(SchedulerContext context)
{
_context = context;
}
[HttpGet]
public IEnumerable<EventModel> Get()
{
return _context.EventModels.ToList();
}
[HttpPost]
public void Post([FromBody] EventModel eventModel)
{
if (ModelState.IsValid)
{
try
{
_context.EventModels.Add(eventModel);
_context.SaveChanges();
}
catch
{
throw;
}
}
}
[HttpPut("{id}")]
public void Put(int id, [FromBody] EventModel eventModel)
{
if (ModelState.IsValid)
{
try
{
_context.Entry(eventModel).State = EntityState.Modified;
_context.SaveChanges();
}
catch
{
throw;
}
}
}
[HttpDelete("{id}")]
public void Delete(int id)
{
if (ModelState.IsValid)
{
try
{
EventModel eventModel = _context.EventModels.Find(id);
_context.EventModels.Remove(eventModel);
_context.SaveChanges();
}
catch
{
throw;
}
}
}
}
[Route("api/[controller]")]
[ApiController]
public class ResourceController : ControllerBase
{
private readonly SchedulerContext _context;
public ResourceController(SchedulerContext context)
{
_context = context;
}
[HttpGet]
public IEnumerable<ResourceModel> Get()
{
return _context.ResourceModels.ToList();
}
}
@using BlazorScheduler.Shared.Models
@using Syncfusion.Blazor
@using Syncfusion.Blazor.Data
@using Syncfusion.Blazor.Schedule
<SfSchedule TValue="EventModel" Width="100%" Height="650px" CurrentView="View.Month" SelectedDate="new DateTime(2021, 9, 1)">
<ScheduleGroup Resources="@GroupData"></ScheduleGroup>
<ScheduleResources>
<ScheduleResource TItem="ResourceModel" TValue="int" Field="OwnerId" Title="Choose Owner" Name="Owners" IdField="Id" TextField="Name" ColorField="Color">
<SfDataManager Url="/api/Resource" Adaptor="Adaptors.WebApiAdaptor"></SfDataManager>
</ScheduleResource>
</ScheduleResources>
<ScheduleEventSettings TValue="EventModel">
<SfDataManager Url="/api/Schedule" Adaptor="Adaptors.WebApiAdaptor"></SfDataManager>
</ScheduleEventSettings>
</SfSchedule>
@code{
private string[] GroupData = new string[] { "Owners" };
}