public async Task <Result <ModuleItem> > Handle(Contract request, CancellationToken cancellationToken) { try { //if (request.UserRole == "Admin" || request.UserRole == "HumanResources" || request.UserRole == "Student") //{ if (String.IsNullOrEmpty(request.ModuleId)) { return(Result.Fail <ModuleItem>("Id da Trilha não informado")); } var qry = await _db.Database .GetCollection <ModuleItem>("Modules") .FindAsync(x => x.Id == ObjectId.Parse(request.ModuleId), cancellationToken: cancellationToken); var module = await qry.FirstOrDefaultAsync(cancellationToken : cancellationToken); if (module != null) { var typeResult = ActionType.Create(3); var actionsColl = _db.Database.GetCollection <Action>("Actions"); var actionsQuery = await actionsColl.FindAsync(x => x.Type == typeResult.Data && x.ModuleId == request.ModuleId && x.CreatedBy == ObjectId.Parse(request.UserId) ); var actions = await actionsQuery.ToListAsync(); var watchedContents = actions.Select(x => x.ContentId).ToList(); watchedContents = watchedContents.Distinct().ToList(); for (int j = 0; j < module.Subjects.Count; j++) { for (int k = 0; k < module.Subjects[j].Contents.Count; k++) { var contentId = module.Subjects[j].Contents[k].Id.ToString(); bool watched = watchedContents.Contains(contentId); module.Subjects[j].Contents[k].Watched = watched; } } } return(Result.Ok(module)); } catch (Exception ex) { return(Result.Fail <ModuleItem>("Acesso Negado")); } }
public async Task <Result <Action> > Handle(Contract request, CancellationToken cancellationToken) { try { var pageResult = ActionPage.Create(request.PageId); if (pageResult.IsFailure) { return(Result.Fail <Action>(pageResult.Error)); } var typeResult = ActionType.Create(request.TypeId); if (typeResult.IsFailure) { return(Result.Fail <Action>(typeResult.Error)); } var action = Action.Create( pageResult.Data, request.Description, typeResult.Data, request.UserId, request.ModuleId, request.EventId, request.SubjectId, request.ContentId, request.Concept, request.SupportMaterialId, request.QuestionId ); if (action.IsFailure) { return(Result.Fail <Action>(action.Error)); } await _db.ActionCollection.InsertOneAsync( action.Data, cancellationToken : cancellationToken ); return(action); } catch (Exception err) { Console.WriteLine(err.Message); throw err; } }
/// <summary> /// /// </summary> /// <returns></returns> public List <ActionType> GetAllActionTypes() { var actionTypes = new List <ActionType>(); try { using (var dbc = DatabaseHelper.GetConnector()) using (var cmd = dbc.BuildStoredProcedureCommand("spGetAllActionTypes")) using (var rdr = cmd.ExecuteReader()) { while (rdr.Read()) { actionTypes.Add(ActionType.Create(rdr)); } } } catch (Exception ex) { _log.Error(ex); } return(actionTypes); }
public async Task <Result> Handle(Contract request, CancellationToken cancellationToken) { try { var typeResult = ActionType.Create(request.TypeId); await _db.ActionCollection.DeleteManyAsync(x => x.ModuleId == request.ModuleId && x.SubjectId == request.SubjectId && x.ContentId == request.ContentId && x.Type == typeResult.Data && x.CreatedBy == ObjectId.Parse(request.UserId), cancellationToken : cancellationToken ); return(Result.Ok()); } catch (Exception err) { Console.WriteLine(err.Message); throw err; } }
public async Task <Result <TrackItem> > Handle(Contract request, CancellationToken cancellationToken) { if (String.IsNullOrEmpty(request.TrackId)) { return(Result.Fail <TrackItem>("Id da Trilha não informado")); } var trackId = ObjectId.Parse(request.TrackId); var track = await GetTrackById(trackId, cancellationToken); var trackItem = new TrackItem { Id = track.Id, Title = track.Title, Modules = new List <ModuleItem>() }; if (track == null) { return(Result.Fail <TrackItem>("Trilha não existe")); } var typeResult = ActionType.Create(3); var actionsColl = _db.Database.GetCollection <Action>("Actions"); var actionsQuery = await actionsColl.FindAsync(x => x.Type == typeResult.Data && x.CreatedBy == ObjectId.Parse(request.UserId) ); var actions = await actionsQuery.ToListAsync(); var watchedContents = actions.Select(x => x.ContentId).ToList(); watchedContents = watchedContents.Distinct().ToList(); var moduleIds = track.ModulesConfiguration.Select(x => x.ModuleId).ToList(); var qry = await _db.Database .GetCollection <ModuleItem>("Modules") .FindAsync(x => moduleIds.Contains(x.Id), cancellationToken: cancellationToken); var modules = await qry.ToListAsync(cancellationToken : cancellationToken); if (modules != null) { for (int i = 0; i < modules.Count; i++) { for (int j = 0; j < modules[i].Subjects.Count; j++) { for (int k = 0; k < modules[i].Subjects[j].Contents.Count; k++) { var contentId = modules[i].Subjects[j].Contents[k].Id.ToString(); bool watched = watchedContents.Contains(contentId); modules[i].Subjects[j].Contents[k].Watched = watched; } } } trackItem.Modules = modules; } return(Result.Ok(trackItem)); }