Changes in / [7f1a891:7dd2ea2]


Ignore:
Location:
src/FinkiChattery
Files:
4 added
16 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • src/FinkiChattery/FinkiChattery.Api/Controllers/v1/QuestionsController.cs

    r7f1a891 r7dd2ea2  
    11using FinkiChattery.Api.ApplicationServices.Authentication;
    2 using FinkiChattery.Api.ApplicationServices.Questioning;
    32using FinkiChattery.Commands.Questioning;
    43using FinkiChattery.Common.Mediator.Interfaces;
    54using FinkiChattery.Contracts.Questioning;
    6 using FinkiChattery.Queries.Questioning;
    75using IdentityServer4.AccessTokenValidation;
    86using Microsoft.AspNetCore.Authorization;
    97using Microsoft.AspNetCore.Mvc;
    10 using System;
    118using System.Threading.Tasks;
    129
     
    3229            return Ok();
    3330        }
    34 
    35         [HttpGet("{questionUid:Guid}")]
    36         [Authorize]
    37         public async Task<IActionResult> GetQuestionState([FromRoute]Guid questionUid)
    38         {
    39             var questionDto = await MediatorService.SendQueryAsync(new GetQuestionStateQuery(questionUid));
    40             return Ok(questionDto.ToQuestionStateResponse());
    41         }
    4231    }
    4332}
  • src/FinkiChattery/FinkiChattery.Api/FinkiChattery.Api.csproj

    r7f1a891 r7dd2ea2  
    2626    <ProjectReference Include="..\FinkiChattery.Contracts\FinkiChattery.Contracts.csproj" />
    2727    <ProjectReference Include="..\FinkiChattery.Persistence\FinkiChattery.Persistence.csproj" />
    28     <ProjectReference Include="..\FinkiChattery.Queries\FinkiChattery.Queries.csproj" />
    2928  </ItemGroup>
    3029
  • src/FinkiChattery/FinkiChattery.Api/Services/RegisterServices.cs

    r7f1a891 r7dd2ea2  
    99using FinkiChattery.Persistence.Models;
    1010using FinkiChattery.Persistence.Repositories;
    11 using FinkiChattery.Queries.Questioning;
    1211using Hangfire;
    1312using Hangfire.SqlServer;
     
    3029            services.AddScoped<IEventService, EventService>();
    3130            services.AddTransient(typeof(IPipelineBehavior<,>), typeof(ValidationBehavior<,>));
    32             services.AddMediatR(typeof(AskQuestionCommand), typeof(GetQuestionStateQuery));
     31            services.AddMediatR(typeof(AskQuestionCommand));
    3332        }
    3433
     
    144143                        services.AddScoped<IStorageService, AwsStorageService>();*/
    145144        }
     145
     146        // TODO: ADD HANGFIRE AND SCAFOLD DB IN HANGFIREDB
    146147    }
    147148
  • src/FinkiChattery/FinkiChattery.Common/Mediator/Interfaces/IMediatorService.cs

    r7f1a891 r7dd2ea2  
    1111        Task<TResponse> SendAsync<TResponse>(ICommand<TResponse> request);
    1212
    13         Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request, CancellationToken cancellationToken);
    14 
    15         Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request);
    16 
    1713        Task PublishAsync<TNotification>(TNotification notification) where TNotification : IEvent;
    1814
  • src/FinkiChattery/FinkiChattery.Common/Mediator/MediatorService.cs

    r7f1a891 r7dd2ea2  
    3737            await mediator.Publish(notification, default);
    3838        }
    39 
    40         public async Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request, CancellationToken cancellationToken)
    41         {
    42             return await mediator.Send(request, cancellationToken);
    43         }
    44 
    45         public async Task<TResponse> SendQueryAsync<TResponse>(IQuery<TResponse> request)
    46         {
    47             return await mediator.Send(request);
    48         }
    4939    }
    5040}
  • src/FinkiChattery/FinkiChattery.Database/FinkiChattery.Database.sqlproj

    r7f1a891 r7dd2ea2  
    7070    <Folder Include="dbo\Tables\Student" />
    7171    <Folder Include="FullTextSearch" />
    72     <Folder Include="dbo\Tables\Answer" />
    73     <Folder Include="dbo\Tables\AnswerResponse" />
    74     <Folder Include="dbo\Tables\Question" />
    75     <Folder Include="dbo\Tables\QuestionCategory" />
    76     <Folder Include="Snapshots" />
    7772  </ItemGroup>
    7873  <ItemGroup>
    7974    <Build Include="dbo\Tables\Moderator.sql" />
    8075    <Build Include="dbo\Tables\Teacher.sql" />
     76    <Build Include="dbo\Tables\Question.sql" />
    8177    <Build Include="dbo\Tables\StudentTeam.sql" />
    8278    <Build Include="dbo\Tables\TeacherTeam.sql" />
     79    <Build Include="dbo\Tables\Answer.sql" />
     80    <Build Include="dbo\Tables\QuestionCategory.sql" />
     81    <Build Include="dbo\Tables\AnswerResponse.sql" />
    8382    <Build Include="dbo\Tables\Upvote.sql" />
    8483    <Build Include="dbo\Tables\User\AspNetRoleClaims.sql" />
     
    9291    <Build Include="FullTextSearch\FullTextIndexQuestion.sql" />
    9392    <Build Include="FullTextSearch\QuestionFullTextCatalog.sql" />
    94     <Build Include="dbo\Tables\Question\Question.sql" />
    95     <None Include="dbo\Tables\Question\Question.Debug.Seed.sql" />
    96     <Build Include="dbo\Tables\Answer\Answer.sql" />
    97     <None Include="dbo\Tables\Answer\Answer.Debug.Seed.sql" />
    98     <Build Include="dbo\Tables\AnswerResponse\AnswerResponse.sql" />
    99     <None Include="dbo\Tables\AnswerResponse\AnswerResponse.Debug.Seed.sql" />
    100     <Build Include="dbo\Tables\QuestionCategory\QuestionCategory.sql" />
    101     <None Include="dbo\Tables\QuestionCategory\QuestionCategory.Debug.Seed.sql" />
    10293  </ItemGroup>
    10394  <ItemGroup>
     
    10697    <PreDeploy Include="dbo\Scripts\Script.PreDeployment.sql" />
    10798    <None Include="FinkiChattery.Database.publish.xml" />
    108     <None Include="Snapshots\FinkiChattery.Database_20210922_17-47-58.dacpac" />
    10999  </ItemGroup>
    110100  <ItemGroup>
     
    130120    </SqlCmdVariable>
    131121  </ItemGroup>
    132   <ItemGroup>
    133     <RefactorLog Include="FinkiChattery.Database.refactorlog" />
    134   </ItemGroup>
    135122</Project>
  • src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Debug.PostDeployment.sql

    r7f1a891 r7dd2ea2  
    1 :r ./../../Tables/User/Seed/Users.Debug.Seed.sql
    2 :r ./../../Tables/Category/Category.Seed.sql
    3 :r ./../../Tables/Student/Student.Debug.Seed.sql
    4 :r ./../../Tables/Question/Question.Debug.Seed.sql
    5 :r ./../../Tables/Answer/Answer.Debug.Seed.sql
    6 :r ./../../Tables/AnswerResponse/AnswerResponse.Debug.Seed.sql
    7 :r ./../../Tables/QuestionCategory/QuestionCategory.Debug.Seed.sql
     1:r .\..\..\Tables\User\Seed\Users.Debug.Seed.sql
     2:r .\..\..\Tables\Category\Category.Seed.sql
     3:r .\..\..\Tables\Student\Student.Debug.Seed.sql
  • src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/PostDeploymentScripts/Production.PostDeployment.sql

    r7f1a891 r7dd2ea2  
    1 :r ./../../Tables/Category/Category.Seed.sql
     1:r .\..\..\Tables\Category\Category.Seed.sql
  • src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PostDeployment.sql

    r7f1a891 r7dd2ea2  
    44                PRINT 'Deploying DEBUG scripts';
    55        END
    6         :r ./PostDeploymentScripts/Debug.PostDeployment.sql
     6        :r .\PostDeploymentScripts\Debug.PostDeployment.sql
    77        BEGIN --Run scripts
    88                PRINT 'End deploying DEBUG scripts';
     
    1515                PRINT 'Deploying PRODUCTION scripts'
    1616        END
    17                 :r ./PostDeploymentScripts/Production.PostDeployment.sql
     17                :r .\PostDeploymentScripts\Production.PostDeployment.sql
    1818                BEGIN --Run scripts
    1919                PRINT 'End deploying PRODUCTION scripts'
  • src/FinkiChattery/FinkiChattery.Database/dbo/Scripts/Script.PreDeployment.sql

    r7f1a891 r7dd2ea2  
    44                PRINT 'Deploying DEBUG pre deployment scripts';
    55        END
    6         :r ./PreDeploymentScripts/Debug.PreDeployment.sql
     6        :r .\PreDeploymentScripts\Debug.PreDeployment.sql
    77        BEGIN --Run scripts
    88                PRINT 'End deploying DEBUG pre deployment scripts';
     
    1515                PRINT 'Deploying PRODUCTION pre deployment scripts'
    1616        END
    17         :r ./PreDeploymentScripts/Production.PreDeployment.sql
     17        :r .\PreDeploymentScripts\Production.PreDeployment.sql
    1818        BEGIN --Run scripts
    1919                PRINT 'End deploying PRODUCTION pre deployment scripts'
  • src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerConfig.cs

    r7f1a891 r7dd2ea2  
    2222            builder.Property(x => x.CorrectAnswer).HasColumnName(@"CorrectAnswer").HasColumnType("bit").IsRequired();
    2323            builder.Property(x => x.CreatedOn).HasColumnName(@"CreatedOn").HasColumnType("smalldatetime").IsRequired();
    24             builder.Property(x => x.UpvotesCount).HasColumnName(@"UpvotesCount").HasColumnType("bigint").IsRequired().HasDefaultValue(0);
    2524
    2625            builder.HasOne(x => x.Question).WithMany(x => x.Answers).HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
  • src/FinkiChattery/FinkiChattery.Persistence/Configurations/AnswerResponseConfig.cs

    r7f1a891 r7dd2ea2  
    2828
    2929            builder.HasOne(x => x.Answer).WithMany(x => x.AnswerResponses).HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
    30             builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.StudentFk).OnDelete(DeleteBehavior.Restrict);
     30            builder.HasOne(x => x.Student).WithMany().HasForeignKey(x => x.AnswerFk).OnDelete(DeleteBehavior.Restrict);
    3131        }
    3232    }
  • src/FinkiChattery/FinkiChattery.Persistence/Configurations/QuestionCategoryConfig.cs

    r7f1a891 r7dd2ea2  
    2626
    2727            builder.HasOne(x => x.Question).WithMany(x => x.QuestionCategories).HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
    28             builder.HasOne(x => x.Category).WithMany().HasForeignKey(x => x.CategoryFk).OnDelete(DeleteBehavior.Restrict);
     28            builder.HasOne(x => x.Category).WithMany().HasForeignKey(x => x.QuestionFk).OnDelete(DeleteBehavior.Restrict);
    2929        }
    3030    }
  • src/FinkiChattery/FinkiChattery.Persistence/Models/Answer.cs

    r7f1a891 r7dd2ea2  
    2020        public DateTime CreatedOn { get; set; }
    2121
    22         public long UpvotesCount { get; set; }
    23 
    2422        public virtual ICollection<Upvote> Upvotes { get; set; }
    2523
  • src/FinkiChattery/FinkiChattery.Persistence/Repositories/Base/Repository.cs

    r7f1a891 r7dd2ea2  
    88namespace FinkiChattery.Persistence.Repositories
    99{
    10     public abstract class Repository<T> : IRepository<T> where T : BaseEntity
     10    public abstract class Repository<T> where T : BaseEntity
    1111    {
    1212        public Repository(ApplicationDbContext dbContext)
     
    2929        }
    3030
    31         public async Task Add(T entity)
     31        public void Add(T entity)
    3232        {
    3333            DbSet.Add(entity);
    34             await DbContext.SaveChangesAsync();
    3534        }
    3635
  • src/FinkiChattery/FinkiChattery.Persistence/Repositories/Contracts/IQuestionRepo.cs

    r7f1a891 r7dd2ea2  
    1 using FinkiChattery.Persistence.Repositories.Contracts;
    2 using System;
    3 using System.Threading.Tasks;
    4 
    5 namespace FinkiChattery.Persistence.Repositories
     1namespace FinkiChattery.Persistence.Repositories
    62{
    73    public interface IQuestionRepo
    84    {
    9         Task<QuestionStateDto> GetQuestionState(Guid questionUid);
    105    }
    116}
  • src/FinkiChattery/FinkiChattery.Persistence/Repositories/Implementations/QuestionRepo.cs

    r7f1a891 r7dd2ea2  
    11using FinkiChattery.Persistence.Context;
    22using FinkiChattery.Persistence.Models;
    3 using FinkiChattery.Persistence.Repositories.Contracts;
    4 using Microsoft.EntityFrameworkCore;
    5 using System;
    6 using System.Linq;
    7 using System.Threading.Tasks;
    83
    94namespace FinkiChattery.Persistence.Repositories
     
    149        {
    1510        }
    16 
    17         public async Task<QuestionStateDto> GetQuestionState(Guid questionUid)
    18         {
    19             // TODO: MAYBE WRITE THIS QUERY AS SP ??
    20             var questionDto = await DbSet
    21               .AsNoTracking()
    22               .Include(x => x.Student)
    23               .Include(x => x.Team)
    24               .Include(x => x.Answers).ThenInclude(y => y.Student)
    25               .Include(x => x.Answers).ThenInclude(y => y.AnswerResponses).ThenInclude(y => y.Student)
    26               .Include(x => x.QuestionCategories).ThenInclude(y => y.Category)
    27               .Where(x => x.Uid == questionUid)
    28               .Select(x => new QuestionStateDto(
    29                                                 x.Id,
    30                                                 x.Uid,
    31                                                 x.Title,
    32                                                 x.Text,
    33                                                 x.CreatedOn,
    34                                                 x.Views,
    35                                                 x.LastActiveOn,
    36                                                 new StudentQuestionStateDto(
    37                                                   x.Student.Id,
    38                                                   x.Student.Uid,
    39                                                   x.Student.IndexNumber,
    40                                                   x.Student.ImageUrl),
    41                                                 x.Answers.Select(y =>
    42                                                 new AnswerQuestionStateDto(
    43                                                     y.Id,
    44                                                     y.Uid,
    45                                                     y.Text,
    46                                                     y.CorrectAnswer,
    47                                                     y.CreatedOn,
    48                                                     y.UpvotesCount,
    49                                                     new AnswerStudentQuestionStateDto(
    50                                                         y.Student.Id,
    51                                                         y.Student.Uid,
    52                                                         y.Student.IndexNumber,
    53                                                         y.Student.ImageUrl),
    54                                                     y.AnswerResponses.Select(z =>
    55                                                     new AnswerResponseQuestionStateDto(
    56                                                         z.Id,
    57                                                         z.Uid,
    58                                                         z.Text,
    59                                                         z.CreatedOn,
    60                                                         new AnswerResponseStudentQuestionStateDto(
    61                                                             z.Student.Id,
    62                                                             z.Student.Uid,
    63                                                             z.Student.IndexNumber,
    64                                                             z.Student.ImageUrl))))),
    65                                                 x.QuestionCategories.Select(y =>
    66                                                 new QuestionCategoryQuestionStateDto(
    67                                                     y.Id,
    68                                                     y.Uid,
    69                                                     y.Category.Name)),
    70                                                 x.Team == null ? null : new TeamQuestionStateDto(
    71                                                     x.Team.Id,
    72                                                     x.Team.Uid,
    73                                                     x.Team.Name)))
    74               .FirstOrDefaultAsync();
    75 
    76             return questionDto;
    77         }
    7811    }
    7912}
  • src/FinkiChattery/FinkiChattery.Queries/FinkiChattery.Queries.csproj

    r7f1a891 r7dd2ea2  
    1 <Project Sdk="Microsoft.NET.Sdk">
     1<Project Sdk="Microsoft.NET.Sdk">
    22
    33  <PropertyGroup>
     
    55  </PropertyGroup>
    66
    7   <ItemGroup>
    8     <ProjectReference Include="..\FinkiChattery.Common\FinkiChattery.Common.csproj" />
    9     <ProjectReference Include="..\FinkiChattery.Persistence\FinkiChattery.Persistence.csproj" />
    10   </ItemGroup>
    11 
    127</Project>
Note: See TracChangeset for help on using the changeset viewer.