public void CreateCalendar(string tenantId, string name, string description, string ownerId, ISet<string> participantsToShareWith, ICalendarCommandResult calendarCommandResult)
        {
            var tenant = new Tenant(tenantId);
            var owner = this.collaboratorService.GetOwnerFrom(tenant, ownerId);
            var sharers = GetSharersFrom(tenant, participantsToShareWith);

            var calendar = new Calendar(tenant, this.calendarRepository.GetNextIdentity(), name, description, owner, sharers);

            this.calendarRepository.Save(calendar);

            calendarCommandResult.SetResultingCalendarId(calendar.CalendarId.Id);
        }
        public void CreateCalendar(string tenantId, string name, string description, string ownerId,
            ISet<string> participantsToShareWith, ICalendarCommandResult calendarCommandResult)
        {
            Owner owner = this._collaboratorService.GetOwnerFrom(new TenantId(tenantId), ownerId);
            IEnumerable<CalendarSharer> sharers = this.GetSharesFrom(new TenantId(tenantId), participantsToShareWith);

            Calendar calendar = new Calendar(new TenantId(tenantId), this._calendarRepository.GetNextIdentity(), name, description,
                owner, sharers);
            this._calendarRepository.Save(calendar);

            calendarCommandResult.SetResultingCalendarId(calendar.CalendarId.Id);
        }
        public void ScheduleCalendarEntry(string tenantId, string calendarId, string description, string location,
            string ownerId, DateTime timeSpanBegins, DateTime timeSpanEnds, string repeatType, DateTime repeatEndsOn,
            string alarmType, int alarmUnits, IEnumerable<string> participantsToInvite,
            ICalendarCommandResult calendarCommandResult)
        {
            Calendar calendar = this._calendarRepository.Get(new TenantId(tenantId), new CalendarId(calendarId));
            CalendarEntry calendarEntry = calendar.ScheduleCalendarEntry(this._calendarIdentityService, description,
                location, this._collaboratorService.GetOwnerFrom(new TenantId(tenantId), ownerId),
                new DateRange(timeSpanBegins, timeSpanEnds),
                new Repetition((RepeatType)Enum.Parse(typeof(RepeatType), repeatType), repeatEndsOn),
                new Alarm((AlarmunitsType)Enum.Parse(typeof(AlarmunitsType), alarmType), alarmUnits),
                GetInviteesFrom(new TenantId(tenantId), participantsToInvite));
            this._calendarEntryRepository.Save(calendarEntry);

            calendarCommandResult.SetResultingCalendarId(calendar.CalendarId.Id);
            calendarCommandResult.SetResultingCalendarEntryId(calendarEntry.CalendarEntryId.Id);
        }
        public void ScheduleCalendarEntry(string tenantId, string calendarId, string description, string location, string ownerId, DateTime timeSpanBegins, DateTime timeSpanEnds,
                                          string repeatType, DateTime repeatEndsOn, string alarmType, int alarmUnits, ISet <string> participantsToInvite, ICalendarCommandResult calendarCommandResult)
        {
            var tenant = new Tenant(tenantId);

            var calendar = this.calendarRepository.Get(tenant, new CalendarId(calendarId));

            var calendarEntry = calendar.ScheduleCalendarEntry(
                this.calendarIdentityService,
                description,
                location,
                this.collaboratorService.GetOwnerFrom(tenant, ownerId),
                new DateRange(timeSpanBegins, timeSpanEnds),
                new Repetition((RepeatType)Enum.Parse(typeof(RepeatType), repeatType), repeatEndsOn),
                new Alarm((AlarmUnitsType)Enum.Parse(typeof(AlarmUnitsType), alarmType), alarmUnits),
                GetInviteesFrom(tenant, participantsToInvite));

            this.calendarEntryRepository.Save(calendarEntry);

            calendarCommandResult.SetResultingCalendarId(calendar.CalendarId.Id);
            calendarCommandResult.SetResultingCalendarEntryId(calendarEntry.CalendarEntryId.Id);
        }
        public void CreateCalendar(string tenantId, string name, string description, string ownerId, ISet <string> participantsToShareWith, ICalendarCommandResult calendarCommandResult)
        {
            var tenant  = new Tenant(tenantId);
            var owner   = this.collaboratorService.GetOwnerFrom(tenant, ownerId);
            var sharers = GetSharersFrom(tenant, participantsToShareWith);

            var calendar = new Calendar(tenant, this.calendarRepository.GetNextIdentity(), name, description, owner, sharers);

            this.calendarRepository.Save(calendar);

            calendarCommandResult.SetResultingCalendarId(calendar.CalendarId.Id);
        }