Ejemplo n.º 1
0
        /// <summary>
        /// Creates calendar Objects and events
        /// </summary>
        /// <param name="model"></param>
        /// <returns>a MemoryStream</returns>
        private MemoryStream GetCalendarBookingBytes(CalendarInviteViewModel model)
        {
            var iCal = new Calendar();


            var evt = iCal.Create <CalendarEvent>();

            evt.Summary     = model.Title;
            evt.Start       = new CalDateTime(model.StartDate);
            evt.End         = new CalDateTime(model.EndDate);
            evt.Description = model.Body;
            evt.Location    = model.Address;

            if (model.StartDate.TimeOfDay.Hours == 0)
            {
                evt.IsAllDay = true;
            }

            evt.Uid = new Guid().ToString();
            //evt.Organizer = new Organizer(organizer);
            evt.Alarms.Add(new Alarm
            {
                Duration    = new TimeSpan(30, 0, 0),
                Trigger     = new Trigger(new TimeSpan(30, 0, 0)),
                Action      = AlarmAction.Display,
                Description = "Reminder"
            });
            SerializationContext ctx     = new SerializationContext();
            ISerializerFactory   factory = new SerializerFactory();
            var serializer = factory.Build(iCal.GetType(), ctx) as IStringSerializer;

            var output = serializer.SerializeToString(iCal);
            var bytes  = Encoding.UTF8.GetBytes(output);

            MemoryStream ms = new MemoryStream(bytes);

            return(ms);
        }
Ejemplo n.º 2
0
        private IHttpActionResult IcsFileContentResult(CalendarInviteViewModel entity, MemoryStream memory)
        {
            var filename = entity.FileName;


            var message = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new ByteArrayContent(memory.ToArray())
            };

            var    encoder       = Encoding.GetEncoding("us-ascii", new EncoderReplacementFallback(string.Empty), new DecoderExceptionFallback());
            string asciiFileName = encoder.GetString(encoder.GetBytes(filename));

            // Set content headers
            message.Content.Headers.ContentLength      = memory.Length;
            message.Content.Headers.ContentType        = new MediaTypeHeaderValue("application/octet-stream");
            message.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName = asciiFileName
            };

            return(new System.Web.Http.Results.ResponseMessageResult(message));
        }
Ejemplo n.º 3
0
        /// <summary>
        ///Generates calendar object using CalendarInviteObject
        /// </summary>
        /// <param name="model"></param>
        /// <returns>ResponseMessageResult</returns>
        public IHttpActionResult CalendarBookingFileResult(CalendarInviteViewModel model)
        {
            var bytes = GetCalendarBookingBytes(model);

            return(IcsFileContentResult(model, bytes));
        }