public async Task <IActionResult> GetFactor([FromQuery] string id) { try { PreFactor factor = await _unitOfWork.PreFactorRepository.GetDbSet().Include(f => f.Images).Include(f => f.User).SingleOrDefaultAsync(f => f.Id == Guid.Parse(id)); if (factor != null) { var x = new { factor.Id, Images = StaticTools.GetImages(factor.Images, _configuration.GetValue <string>("url")), factor.IsDone, factor.SubmittedFactorId, UserPhone = factor.User.Phone }; return(Ok(x)); } else { return(NotFound("factor not found")); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
public async IAsyncEnumerable <FileContentResult> GetPreFactorImages([FromQuery] string factorId) { PreFactor factor = await _unitOfWork.PreFactorRepository.GetDbSet().Include(f => f.Images).SingleOrDefaultAsync(f => f.Id == Guid.Parse(factorId)); foreach (Image image in factor.Images) { yield return(File(image.Bytes, "image/jpeg")); } }
public async Task <IActionResult> UploadFiles([FromForm] ImageFilesRequestModel model) { try { if (CheckFiles(model.Files)) { List <Image> vs = new List <Image>(); foreach (IFormFile file in model.Files) { byte[] bytes = new byte[file.Length]; file.OpenReadStream().Read(bytes, 0, bytes.Length); vs.Add(new Image { Bytes = bytes }); } ClaimsIdentity identity = HttpContext.User.Identity as ClaimsIdentity; string id = identity.Claims.ElementAt(0).Value.Split(' ').Last(); PreFactor factor = new PreFactor() { Title = model.Title.IsEmpty() ? null : model.Title, Images = vs, User = await _authService.GetUser(id), Description = model.Description }; try { _unitOfWork.PreFactorRepository.Insert(factor); _unitOfWork.Commit(); return(Ok(factor)); } catch (Exception ex) { _logger.Log(LogLevel.Error, ex, "transaction rollback", factor); _unitOfWork.Rollback(); return(Problem("database rollback")); } } else { return(BadRequest("All images must be JPEG")); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
public async Task <IActionResult> AddImagesToFactor([FromBody] AddImageToFactorRequestModel model) { try { PreFactor factor = await _unitOfWork.PreFactorRepository.GetDbSet().Include(f => f.Images).SingleOrDefaultAsync(f => f.Id == Guid.Parse(model.FactorId)); if (factor == null) { return(NotFound("factor not found")); } if (CheckFiles(model.Images)) { List <Image> vs = new List <Image>(); foreach (IFormFile file in model.Images) { byte[] bytes = new byte[file.Length]; file.OpenReadStream().Read(bytes, 0, bytes.Length); vs.Add(new Image(bytes)); } factor.Images.AddRange(vs); try { _unitOfWork.PreFactorRepository.Update(factor); _unitOfWork.Commit(); return(Ok(factor.Images)); } catch (Exception ex) { _logger.Log(LogLevel.Error, ex, "transaction rollback", factor); _unitOfWork.Rollback(); return(Problem("database rollback")); } } else { return(BadRequest("All images must be JPEG")); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }
public async Task <IActionResult> SubmitUserFactor([FromBody] SubmitUserFactorRequestModel model) { try { PreFactor preFactor = await _unitOfWork.PreFactorRepository.GetDbSet().Include(f => f.User).ThenInclude(u => u.Contacts).SingleOrDefaultAsync(f => f.Id == Guid.Parse(model.PreFactorId)); if (preFactor == null) { return(NotFound("preFactor not found")); } if (preFactor.SubmittedFactorId != null) { return(BadRequest("This preFactor already have a submitted factor")); } Contact contact = preFactor.User.Contacts.SingleOrDefault(c => c.Id == Guid.Parse(model.ContactId)); if (contact == null) { return(NotFound("user contact not found")); } long totalPrice = 0; List <FactorItem> factors = new List <FactorItem>(); foreach (FactorItemRequestModel item in model.FactorItems) { Product product = await _unitOfWork.ProductRepository.SingleOrDefaultAsync(p => p.Title == item.Product.Title); if (product == null) { return(NotFound(item.Product.Title + " not found")); } FactorItem factorItem = new FactorItem() { Price = item.Price, Product = product, TotalPrice = item.Quantity * item.Price }; factors.Add(factorItem); totalPrice += factorItem.TotalPrice; } SubmittedFactor sf = new SubmittedFactor { Contact = contact, FactorDate = model.FactorDate, TotalPrice = totalPrice, Items = factors, PreFactor = preFactor, State = new State(model.State.IsClear), Code = await CalculateCode(preFactor.User.Phone) }; try { _unitOfWork.SubmittedFactorRepository.Insert(sf); preFactor.IsDone = true; _unitOfWork.PreFactorRepository.Update(preFactor); _unitOfWork.Commit(); var x = new { sf.Id, sf.Items, sf.State, sf.TotalPrice }; return(Ok(x)); } catch (Exception e) { _unitOfWork.Rollback(); _logger.LogError(e, e.Message); return(Problem("database error")); } } catch (Exception e) { _logger.LogError(e, e.Message); return(Problem(e.Message)); } }