Exemplo n.º 1
0
            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);
            }
Exemplo n.º 2
0
            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);
            }
Exemplo n.º 3
0
            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);
            }
Exemplo n.º 4
0
            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);
            }