public async Task <ILeadershipPointSystemResponse> AddCriteriaClaimAsync(CriteriaClaimRequestView model) { try { var userInfo = await _appDbContext.UserInfos.FirstOrDefaultAsync(k => k.UserId == model.ProfileId); if (userInfo == null) { return(new LeadershipPointSystemResponse(ClientMessageConstant.ProfileNotExist, HttpStatusCode.NotFound)); } var criteria = await _appDbContext.Criteria.FirstOrDefaultAsync(k => k.Id == model.CriteriaId); if (criteria == null) { return(new LeadershipPointSystemResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound)); } model.CorrelationId = Guid.NewGuid(); await SaveFile(model, userInfo); var orderNumber = _appDbContext.CriteriaClaims .Where(k => k.ProfileId == model.ProfileId && k.CriteriaId == model.CriteriaId) .OrderBy(k => k.Order).LastOrDefault()?.Order ?? 0; var claim = new CriteriaClaim() { ProfileId = model.ProfileId, RequestDate = DateTime.UtcNow, Modified = DateTime.UtcNow, CorrelationId = model.CorrelationId, CriteriaId = criteria.Id, StatusId = criteria.RequiresApproval ? (int)ClaimStatusType.Pending : (int)ClaimStatusType.Accepted, IsDeleted = false, Created = DateTime.UtcNow, ModifiedBy = userInfo.Email, CreatedBy = userInfo.Email, Details = model.Label, Order = orderNumber + 1 }; await _appDbContext.CriteriaClaims.AddAsync(claim); await _appDbContext.SaveChangesAsync(); await UpdateLPSPointsAsync(model); var criteriaClaimed = await GetCriteriaClaimedPointsAsync(model.ProfileId, model.CriteriaId); return(new LeadershipPointSystemResponse(criteriaClaimed.CriteriaClaimedPointsView)); } catch (Exception e) { return(new LeadershipPointSystemResponse(e)); } }
private async Task UpdateLPSPointsAsync(CriteriaClaimRequestView model) { var profile = await _appDbContext.Profiles.FirstOrDefaultAsync(k => k.Id == model.ProfileId); var criteriaClaims = await _appDbContext.CriteriaClaims.Include(y => y.Criteria) .Where(k => k.ProfileId == model.ProfileId && !k.IsDeleted).ToListAsync(); var earnedPoints = criteriaClaims.Where(k => k.StatusId == (int)ClaimStatusType.Accepted && !k.IsDeleted) .Sum(k => k.Criteria.Points); profile.Lpspoints = earnedPoints; await _appDbContext.SaveChangesAsync(); }
private async Task SaveFile(CriteriaClaimRequestView model, UserInfo userInfo) { foreach (var formFile in model.AttachmentFile) { if (formFile == null) { continue; } var data = new File() { IdGuid = Guid.NewGuid(), CorrelationId = model.CorrelationId, SizeMb = GetFileSize(formFile.Length), Name = formFile.FileName, ProviderName = "SqlProvider", Created = DateTime.UtcNow, MimeType = formFile.ContentType, Modified = DateTime.UtcNow, CreatedBy = userInfo.Email, ModifiedBy = userInfo.Email }; await _appDbContext.Files.AddAsync(data); await _appDbContext.SaveChangesAsync(); var fileDb = new FileDB() { Id = data.IdGuid, Bytes = StreamToBytes(formFile.OpenReadStream()) }; await _fileDbContext.FileDB.AddAsync(fileDb); await _fileDbContext.SaveChangesAsync(); } }
public async Task <IActionResult> AddCriteriaClaimAsync([FromForm] CriteriaClaimRequestView claimRequest) { var result = await _leadershipPointSystemService.AddCriteriaClaimAsync(claimRequest); return(Ok(result)); }