コード例 #1
0
        public async Task <IActionResult> AddOffer([FromForm] OfferBindingModel model)
        {
            Result result;

            if (!ModelState.IsValid)
            {
                result = new Result
                {
                    IsSuccess = false,
                    EntityId  = Guid.Empty,
                    Error     = "Ошибка в заполненной форме"
                };

                return(BadRequest(JsonConvert.SerializeObject(result, Formatting.None, new JsonSerializerSettings
                {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                })));
            }

            result = await _offerService.Create(_mapper.Map <OfferDto>(model), User.Identity.Name !);

            if (result.IsSuccess)
            {
                var offerPhotos = new List <PhotoDto>();
                foreach (var photo in model.Photos)
                {
                    if (photo != null)
                    {
                        byte[] imageData = null;
                        using var binaryReader = new BinaryReader(photo.OpenReadStream());
                        imageData = binaryReader.ReadBytes((int)photo.Length);

                        offerPhotos.Add(new PhotoDto
                        {
                            Image   = imageData,
                            OfferId = result.EntityId
                        });
                    }
                }

                if (offerPhotos.Count > 0)
                {
                    result = await _photoService.Save(offerPhotos, result.EntityId);
                }
            }

            return(Ok(JsonConvert.SerializeObject(result, Formatting.None, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            })));
        }
コード例 #2
0
        public IHttpActionResult CreateNewOffer(OfferBindingModel offerModel)
        {
            if (offerModel == null)
            {
                return(this.BadRequest("Invalid offer data."));
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var currentUserId = User.Identity.GetUserId();
            var currentUser   = db.Users.FirstOrDefault(u => u.Id == currentUserId);

            if (currentUser == null)
            {
                return(this.Unauthorized());
            }

            Offer offer = new Offer()
            {
                Title              = offerModel.Title,
                Description        = offerModel.Description,
                InitialPrice       = offerModel.InitialPrice,
                ExpirationDateTime = DateTime.Parse(offerModel.ExpirationDateTime),
                SellerId           = currentUserId,
                DatePublished      = DateTime.Now
            };

            db.Offers.Add(offer);
            db.SaveChanges();

            return(CreatedAtRoute(
                       "DefaultApi",
                       new
            {
                id = offer.Id
            },
                       new
            {
                id = offer.Id,
                Seller = currentUser.UserName,
                Message = "Offer created."
            }));
        }
コード例 #3
0
        public static async Task <OfferItem> AddOfferAsync(OfferBindingModel offer)
        {
            OfferItem offerItem = null;
            await Task.Run(async() =>
            {
                var client = new HttpClient();
                MultipartFormDataContent content = null;
                List <FileResult> fileResults    = AddOfferViewModel.uploadedFiles;

                if (fileResults != null)
                {
                    content = new MultipartFormDataContent("NkdKd9Yk");
                    content.Headers.ContentType.MediaType = "multipart/form-data";
                    foreach (FileResult fileResult in fileResults)
                    {
                        content.Add(new StreamContent(File.OpenRead(fileResult.FullPath)), fileResult.FileName, fileResult.FileName);
                    }
                }

                content.Headers.ContentType.MediaType = "multipart/form-data";
                var json = JsonConvert.SerializeObject(offer);
                HttpContent httpContent = new StringContent(json);

                httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");

                content.Add(httpContent);

                var response = await client.PostAsync(Service.URI + "api/Offers/", content);

                if (response.IsSuccessStatusCode)
                {
                    offerItem = JsonConvert.DeserializeObject <OfferItem>(response.Content.ReadAsStringAsync().Result);
                }
            });

            return(offerItem);
        }