private Complain MapComplain(ComplainRequestViewModel complain)
 {
     return(new Complain
     {
         Text = complain.ComplainText,
         DealId = complain.DealId,
         DateOfCreating = DateTime.Today.Date
     });
 }
Beispiel #2
0
        public async Task <IHttpActionResult> Create(ComplainRequestViewModel complainModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            string         username = HttpContext.Current.User.Identity.Name;
            IdentityResult result   = await _repo.CreateComplain(username, complainModel);

            IHttpActionResult errorResult = GetErrorResult(result);

            return(errorResult == null?Ok() : errorResult);
        }
        public async Task <IdentityResult> CreateComplain(string username, ComplainRequestViewModel complainModel)
        {
            var deal = await _context.Deals.FirstOrDefaultAsync(d => d.Id == complainModel.DealId);

            if (deal == null)
            {
                return(IdentityResult.Failed($"Deal {complainModel.DealId} not found."));
            }

            if (deal.UserCreditor == null || deal.UserCreditor.UserName != username)
            {
                return(IdentityResult.Failed($"User '{username}' can not create complain for this deal."));
            }

            if (deal.IsClosed)
            {
                return(IdentityResult.Failed($"Can not create complain for the closed deal."));
            }

            _context.Complains.Add(MapComplain(complainModel));

            try
            {
                await _context.SaveChangesAsync();

                return(IdentityResult.Success);
            }
            catch (DbEntityValidationException ex)
            {
                _logger.Error("ComplainRepository.CreateComplain", ex);
                return(IdentityResult.Failed(ex.GetValidationErrors()));
            }
            catch (Exception ex)
            {
                _logger.Error("ComplainRepository.CreateComplain", ex);
                return(null);
            }
        }