public static (bool isAuthorized, Administrator foundAdministrator) AuthorizeUser(string username, string password) { using (var dbContext = new HappyMeterDatabaseContext()) { var foundAdministrator = dbContext.Administrators.FirstOrDefault(a => a.Username == username); if (foundAdministrator == null) { if (!dbContext.Administrators.Any()) { // First login ever and currently no user created var createdAdministrator = CreateUser(username, password); dbContext.Administrators.Add(createdAdministrator); dbContext.SaveChanges(); return(true, createdAdministrator); } // Wrong username return(false, null); } if (!VerifyPassword(password, foundAdministrator.PasswordHash)) { return(false, null); } return(true, foundAdministrator); } }
public async Task <IHttpActionResult> AddEmotionalState([FromBody] AddEmotionalStateDto addEmotionalStateDto) { // Validate parameters if (!ModelState.IsValid || addEmotionalStateDto == null) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { // The provided Emotion has to exist and be active if (!await dbContext.Emotions.AnyAsync(e => e.Id == addEmotionalStateDto.EmotionId && e.IsActive)) { return(BadRequest()); } dbContext.EmotionalStates.Add(new EmotionalState { EmotionId = addEmotionalStateDto.EmotionId, Comment = addEmotionalStateDto.Comment, CreatedDate = DateTime.UtcNow }); await dbContext.SaveChangesAsync(); return(Ok()); } }
public async Task <IHttpActionResult> AddEmojiFromFaceAnalysis([FromBody] AddEmojiFromFaceAnalysisDto addEmojiFromFaceAnalysisDto) { // Validate parameters if (!ModelState.IsValid || addEmojiFromFaceAnalysisDto == null) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { // The provided Emotion has to exist (but doesn't have to be active) var fittingEmoji = await dbContext.Emotions.FirstOrDefaultAsync(e => e.Smiley == addEmojiFromFaceAnalysisDto.EmojiCode); if (fittingEmoji == null) { return(BadRequest()); } dbContext.EmotionalStates.Add(new EmotionalState { EmotionId = fittingEmoji.Id, CreatedDate = DateTime.UtcNow }); await dbContext.SaveChangesAsync(); return(Ok()); } }
public async Task <IHttpActionResult> SetSmileyForEmotion([FromBody] ChangeEmotionSmileyDto changeEmotionSmileyDto) { // Validate parameters if (!ModelState.IsValid || changeEmotionSmileyDto == null) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { if (await dbContext.Emotions.AnyAsync(e => e.Smiley == changeEmotionSmileyDto.NewSmileyCode)) { return(BadRequest()); } var data = await dbContext.Emotions.FindAsync(changeEmotionSmileyDto.EmotionId); if (data == null) { return(NotFound()); } data.Smiley = changeEmotionSmileyDto.NewSmileyCode; await dbContext.SaveChangesAsync(); return(Ok()); } }
public async Task <IHttpActionResult> AddNewEmotion([FromBody] AddNewEmotionDto addNewEmotionDto) { // Validate parameters if (!ModelState.IsValid || addNewEmotionDto == null) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { if (await dbContext.Emotions.AnyAsync(e => e.Smiley == addNewEmotionDto.NewSmileyCode)) { return(BadRequest()); } dbContext.Emotions.Add(new Emotion { Smiley = addNewEmotionDto.NewSmileyCode, IsActive = true }); await dbContext.SaveChangesAsync(); return(Ok()); } }
public async Task <IHttpActionResult> SetNewUsername([FromBody] SetUsernameDto setUsernameDto) { // Validate parameters if (!ModelState.IsValid || setUsernameDto == null) { return(BadRequest()); } var authorizedAdministrator = (Administrator)ActionContext.Request.Properties[AuthorizationConstants.UserInformationKey]; using (var dbContext = new HappyMeterDatabaseContext()) { if (await dbContext.Administrators.AnyAsync(a => a.Username == setUsernameDto.NewUsername)) { return(BadRequest()); } dbContext.Administrators.Attach(authorizedAdministrator); authorizedAdministrator.UpdateUsername(setUsernameDto.NewUsername); await dbContext.SaveChangesAsync(); return(Ok()); } }
public async Task <IHttpActionResult> AllEmotions() { using (var dbContext = new HappyMeterDatabaseContext()) { var data = await dbContext.Emotions.ToListAsync(); return(Ok(data)); } }
public async Task <IHttpActionResult> ActiveEmotions() { using (var dbContext = new HappyMeterDatabaseContext()) { var data = await dbContext.Emotions .Where(e => e.IsActive) .Select(e => new ReducedEmotion { Id = e.Id, SmileyCode = e.Smiley }) .ToListAsync(); return(Ok(data)); } }
public async Task <IHttpActionResult> GroupedEmotionalStatesWithinRange([Required] DateTimeOffset from, [Required] DateTimeOffset to) { // Validate parameters if (!ModelState.IsValid || from > to || from.Offset != to.Offset) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { var data = await dbContext.EmotionalStates .Where(e => e.CreatedDate >= from.UtcDateTime && e.CreatedDate <= to.UtcDateTime) .Select(e => new { e.Id, e.CreatedDate, e.Comment, e.Emotion.Smiley }) .ToListAsync(); var offset = from.Offset; var groupedData = data .GroupBy(e => e.CreatedDate.Add(offset).Date) .Select(dateGroup => new EmotionalStateHistoryItem { Date = new DateTimeOffset(dateGroup.Key, offset), EmotionalStates = dateGroup.GroupBy(e => e.Smiley).OrderBy(g => g.Key).Select(g => new GroupedEmotionalState { SmileyCode = g.Key, Comments = g.Where(e => !string.IsNullOrWhiteSpace(e.Comment)).Select(e => new CommentWithPostdate { Id = e.Id, PostDate = e.CreatedDate, Comment = e.Comment }).ToList(), Count = g.Count() }).ToList() }); return(Ok(groupedData)); } }
public async Task <IHttpActionResult> SetActiveForEmotion([FromBody] ChangeEmotionIsActiveDto changeEmotionIsActiveDto) { // Validate parameters if (!ModelState.IsValid || changeEmotionIsActiveDto == null) { return(BadRequest()); } using (var dbContext = new HappyMeterDatabaseContext()) { var data = await dbContext.Emotions.FindAsync(changeEmotionIsActiveDto.EmotionId); if (data == null) { return(NotFound()); } data.IsActive = changeEmotionIsActiveDto.IsActive; await dbContext.SaveChangesAsync(); return(Ok()); } }