public async Task <IActionResult> Create([FromBody] DonePracticeResource model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var          userId       = Int32.Parse((HttpContext.User.FindFirst("id").Value));
            DonePractice donePractice = _mapper.Map <DonePracticeResource, DonePractice>(model);

            donePractice.UserId = userId;
            var courseResponse = await _donePracticeService.CreateAsync(donePractice);

            if (!courseResponse.Success)
            {
                return(BadRequest(courseResponse.Message));
            }
            return(Ok(courseResponse.Extra));
        }
Example #2
0
        public async Task <BasexResponse <TakenPointResponse> > CreateAsync(DonePractice donePractice)
        {
            try
            {
                var resDonePractice = await _donePracticeDal.FindByAsync(d => d.UserId == donePractice.UserId && d.GivenPracticeId == donePractice.GivenPracticeId);

                var singleResDone = resDonePractice.FirstOrDefault();
                if (singleResDone != null)
                {
                    singleResDone.TotalDonePractice++;
                    singleResDone.CreationTime = DateTime.UtcNow;
                    await _donePracticeDal.UpdateAsync(singleResDone);

                    await _unitOfWork.CompleteAsync();

                    var updatedResponse = new TakenPointResponse
                    {
                        Score           = singleResDone.TotalDonePractice * 100,
                        UserId          = (int)singleResDone.UserId,
                        GivenPracticeId = singleResDone.GivenPracticeId
                    };
                    return(new BasexResponse <TakenPointResponse>(updatedResponse));
                }
                donePractice.CreationTime      = DateTime.UtcNow;
                donePractice.TotalDonePractice = 1;
                await _donePracticeDal.AddAsync(donePractice);

                await _unitOfWork.CompleteAsync();

                var response = new TakenPointResponse
                {
                    Score           = donePractice.TotalDonePractice * 100,
                    UserId          = (int)donePractice.UserId,
                    GivenPracticeId = donePractice.GivenPracticeId
                };
                return(new BasexResponse <TakenPointResponse>(response));
            }
            catch (Exception ex)
            {
                return(new BasexResponse <TakenPointResponse>(ex.Message));
            }
        }