public void Post(PatchEvent request) { try { var source = new VEVENT { Start = request.Start, Classification = request.Classification, Description = request.Description, GeoPosition = request.Position, Location = request.Location, Organizer = request.Organizer, Priority = request.Priority, Sequence = request.Sequence, Status = request.Status, Summary = request.Summary, Transparency = request.Transparency, Url = request.Url, RecurrenceRule = request.RecurrenceRule, End = request.End, Duration = request.Duration, Attachments = request.Attachments, Attendees = request.Attendees, Categories = request.Categories, Comments = request.Comments, Contacts = request.Contacts, ExceptionDates = request.ExceptionDates, RequestStatuses = request.RequestStatuses, Resources = request.Resources, RelatedTos = request.RelatedTos, Alarms = request.Alarms, }; var fields = new List<string>(); if (source.Start != default(DATE_TIME)) fields.Add("Start"); if (source.Classification != default(CLASS)) fields.Add("Classification"); if (source.Description != null) fields.Add("Description"); if (source.GeoPosition != default(GEO)) fields.Add("Position"); if (source.Location != null) fields.Add("Location"); if (source.Organizer != null) fields.Add("Organizer"); if (source.Priority != default(PRIORITY)) fields.Add("Priority"); if (source.Sequence != default(int)) fields.Add("Sequence"); if (source.Status != default(STATUS)) fields.Add("Status"); if (source.Summary != null) fields.Add("Summary"); if (source.Transparency != default(TRANSP)) fields.Add("Transparency"); if (source.Url != default(URL)) fields.Add("Url"); if (source.RecurrenceRule != null) fields.Add("RecurrenceRule"); if (source.End != default(DATE_TIME)) fields.Add("End"); if (source.Duration != default(DURATION)) fields.Add("Duration"); if (source.Categories != null) fields.Add("Categories"); if (source.Attachments != null) fields.Add("Attachments"); if (source.Attendees != null) fields.Add("Attendees"); if (source.Comments != null) fields.Add("Comments"); if (source.Contacts != null) fields.Add("Contacts"); if (source.ExceptionDates != null) fields.Add("ExceptionDates"); if (source.RequestStatuses != null) fields.Add("RequestStatuses"); if (source.Resources != null) fields.Add("Resources"); if (source.RelatedTos != null) fields.Add("RelatedTos"); if (source.Alarms != null) fields.Add("Alarms"); eventRepository.Patch(source, fields, request.EventId.ToSingleton()); var cacheKey = keyBuilder.Build(request, x => x.EventId).ToString(); RequestContext.RemoveFromCache(Cache, cacheKey); } catch (InvalidOperationException ex) { logger.Error(ex.ToString()); throw; } catch (ApplicationException ex) { logger.Error(ex.ToString()); throw; } catch (Exception ex) { logger.Error(ex.ToString()); throw; } }