private async Task <EventDraft> CreateEventDraft( Contract request, Event originalEvent, Duration duration, Duration videoDuration, CancellationToken token ) { var tutorsIds = request.TutorsIds != null? request.TutorsIds.Select(x => ObjectId.Parse(x)).ToList() : new List <ObjectId>(); var instructorId = String.IsNullOrEmpty(request.InstructorId) ? ObjectId.Empty : ObjectId.Parse(request.InstructorId); var eventId = ObjectId.Parse(request.Id); var draft = EventDraft.Create( eventId, request.Title, request.Excerpt, request.ImageUrl, instructorId, request.Instructor, request.InstructorMiniBio, request.InstructorImageUrl, request.Tags, request.VideoUrl, videoDuration, duration, request.CertificateUrl, tutorsIds, request.StoreUrl ).Data; draft.Schedules = originalEvent.Schedules; draft.Requirements = originalEvent.Requirements; draft.SupportMaterials = originalEvent.SupportMaterials; draft.PrepQuiz = originalEvent.PrepQuiz; await _db.EventDraftCollection.InsertOneAsync( draft, cancellationToken : token ); return(draft); }
private async Task <bool> UpdateTrackEvent(EventDraft draft, CancellationToken token) { var dbTrack = await _db.TrackCollection.AsQueryable() .Where(x => x.EventsConfiguration.Any(y => y.EventId == draft.EventId)) .ToListAsync(token); if (dbTrack == null || dbTrack.Count == 0) { return(false); } var models = new List <WriteModel <Track> >(); foreach (Track track in dbTrack) { var events = track.EventsConfiguration.Where(y => y.EventId == draft.EventId).ToList(); if (events != null && events.Count > 0) { foreach (TrackEvent trackEvent in events) { trackEvent.Title = draft.Title; } var upd = Builders <Track> .Update.Set(x => x.EventsConfiguration, track.EventsConfiguration); models.Add(new UpdateOneModel <Track>(new BsonDocument("_id", track.Id), upd)); } } await _db.TrackCollection.BulkWriteAsync(models); return(true); }
private async Task <EventDraft> CreateEventDraft( Contract request, Event originalEvent, CancellationToken token ) { var draft = EventDraft.Create( originalEvent.Id, originalEvent.Title, originalEvent.Excerpt, originalEvent.ImageUrl, originalEvent.InstructorId, originalEvent.Instructor, originalEvent.InstructorMiniBio, originalEvent.InstructorImageUrl, originalEvent.Tags.Select(t => t.Name).ToArray(), originalEvent.VideoUrl, originalEvent.VideoDuration, originalEvent.Duration, originalEvent.CertificateUrl, originalEvent.TutorsIds, originalEvent.StoreUrl ).Data; draft.Schedules = originalEvent.Schedules; draft.Requirements = originalEvent.Requirements; draft.SupportMaterials = originalEvent.SupportMaterials; draft.PrepQuiz = originalEvent.PrepQuiz; await _db.EventDraftCollection.InsertOneAsync( draft, cancellationToken : token ); return(draft); }
private async Task <bool> UpdateCurrentEvent(EventDraft draft, CancellationToken token) { var dbEvent = await _db.EventCollection.AsQueryable() .Where(mod => mod.Id == draft.EventId) .FirstOrDefaultAsync(); if (dbEvent == null) { return(false); } string config = _configuration[$"EcommerceIntegration:Active"]; dbEvent.EcommerceId = draft.EcommerceId; if (!draft.EcommerceId.HasValue && draft.CreateInEcommerce && config == "True") { var response = await CreateEcommerceProduct(dbEvent); string content = await response.Content.ReadAsStringAsync(); if (response.StatusCode == HttpStatusCode.Created) { var parsed = JObject.Parse(content); dbEvent.EcommerceId = (long)parsed["product"]["id"]; } else { var error = ErrorLog.Create( ErrorLogTypeEnum.EcommerceIntegration, "create-module", content ).Data; await _db.ErrorLogCollection.InsertOneAsync( error, cancellationToken : token ); } } dbEvent.Title = draft.Title; dbEvent.Excerpt = draft.Excerpt; dbEvent.ImageUrl = draft.ImageUrl; dbEvent.InstructorId = draft.InstructorId; dbEvent.Instructor = draft.Instructor; dbEvent.InstructorMiniBio = draft.InstructorMiniBio; dbEvent.InstructorImageUrl = draft.InstructorImageUrl; dbEvent.Tags = draft.Tags; dbEvent.VideoUrl = draft.VideoUrl; dbEvent.VideoDuration = draft.VideoDuration; dbEvent.Duration = draft.Duration; dbEvent.PrepQuiz = draft.PrepQuiz; dbEvent.PrepQuizQuestionList = draft.PrepQuizQuestionList; dbEvent.CertificateUrl = draft.CertificateUrl; dbEvent.TutorsIds = draft.TutorsIds; dbEvent.StoreUrl = draft.StoreUrl; dbEvent.Schedules = draft.Schedules; dbEvent.Requirements = draft.Requirements; dbEvent.SupportMaterials = draft.SupportMaterials; await _db.EventCollection.ReplaceOneAsync(t => t.Id == dbEvent.Id, dbEvent, cancellationToken : token ); return(true); }