Пример #1
0
        public void Create(RoomImageDTO roomImageDto)
        {
            RoomImage roomImage = Mapper.Map <RoomImageDTO, RoomImage>(roomImageDto);

            _unitOfWork.RoomImages.Create(roomImage);
            _unitOfWork.Save();
        }
Пример #2
0
        public async Task <ActionResult> UploadRoomImage(RoomViewModel roomViewModel)
        {
            if (ModelState.IsValid)
            {
                // Check if uploadedFiles != null
                if (roomViewModel.Images != null && roomViewModel.Images.Count() > 0)
                {
                    var roomImagesUploadModel = new RoomImagesUploadModel()
                    {
                        RoomId = roomViewModel.Id,
                        Images = new List <byte[]>()
                    };
                    foreach (HttpPostedFileBase file in roomViewModel.Images)
                    {
                        using (var reader = new BinaryReader(file.InputStream))
                        {
                            roomImagesUploadModel.Images.Add(reader.ReadBytes(file.ContentLength));
                        }
                    }
                    // Set the Accept header for BSON.
                    Client.DefaultRequestHeaders.Accept.Clear();
                    Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/bson"));
                    // POST using the BSON formatter.
                    MediaTypeFormatter bsonFormatter = new BsonMediaTypeFormatter();
                    try
                    {
                        var response = await Client.PostAsync <RoomImagesUploadModel>("api/Image/Upload/", roomImagesUploadModel, bsonFormatter);

                        if ((int)response.StatusCode == 200)
                        {
                            // Use BSON formatter to deserialize the response content
                            MediaTypeFormatter[] formatters = new MediaTypeFormatter[] {
                                new BsonMediaTypeFormatter()
                            };
                            ImageUploadResult imageUploadResult = await response.Content.ReadAsAsync <ImageUploadResult>(formatters);

                            for (int i = 0; i < roomViewModel.Images.Count(); i++)
                            {
                                // Create Dto and send to Database
                                RoomImageDTO roomImageDTO = new RoomImageDTO()
                                {
                                    Id     = imageUploadResult.Id[i],
                                    RoomId = roomImagesUploadModel.RoomId
                                };
                                roomImageService.Create(roomImageDTO);
                            }

                            TempData["ErrorMessage"] = "Images uploaded and a record has been creaded in database";
                            return(RedirectToAction("Edit", new { id = roomViewModel.Id.ToString() }));
                        }
                        else
                        {
                            TempData["ErrorMessage"] = "Bad responce, Status Code " + (int)response.StatusCode;
                            return(RedirectToAction("Edit", new { id = roomViewModel.Id.ToString() }));
                        }
                    }
                    catch
                    {
                        TempData["ErrorMessage"] = "Can't connect to API";
                        return(RedirectToAction("Edit", new { id = roomViewModel.Id.ToString() }));
                    }
                    // If response is Ok
                }
                else
                {
                    TempData["ErrorMessage"] = "File is empty";
                    return(RedirectToAction("Edit", new { id = roomViewModel.Id.ToString() }));
                }
            }
            else
            {
                TempData["ErrorMessage"] = "Room model state is not valid";
                return(RedirectToAction("Edit", new { id = roomViewModel.Id.ToString() }));
            }
        }