Пример #1
0
        /// <summary>
        /// Edits offer item, that matches received offered item view model
        /// </summary>
        /// <param name="model">offer item view model, received from front end</param>
        /// <returns>Edited offer item view model</returns>
        public OfferedItemViewModel EditOfferedItem(OfferedItemViewModel model)
        {
            try
            {
                if (model != null)
                {
                    OfferedItem item = this._unitOfWork.OfferedItemRepository.Get(model.Id);
                    item.Description     = model.Description;
                    item.Name            = model.Name;
                    item.GoodsCategory   = this._unitOfWork.GoodsCategoryRepository.GetGoodsCategoryById(model.GoodsCategoryId);
                    item.GoodsCategoryId = item.GoodsCategory.Id;
                    this.SetOfferedItemPictures(model.Image, item);
                    this._unitOfWork.SaveChanges();
                }

                //TODO: uncomment
                //SetImagesUrl(model.Image);

                return(model);
            }
            catch (Exception ex)
            {
                throw new BusinessLogicException(ex.Message);
            }
        }
Пример #2
0
        /// <summary>
        /// Creates new Offer Item
        /// </summary>
        /// <param name="model">base model for new offer item</param>
        /// <returns>OfferedItemViewModel</returns>
        public OfferedItemViewModel CreateOfferedItem(OfferedItemViewModel model)
        {
            const string initialStatus = "Активний";

            try
            {
                if (model != null)
                {
                    OfferedItem item = model;
                    item.User          = this._unitOfWork.UsersRepository.GetUserById(model.UserId);
                    item.GoodsCategory = this._unitOfWork.GoodsCategoryRepository.GetGoodsCategoryById(model.GoodsCategoryId);
                    item.Status        = this._unitOfWork.StatusRepository.GetStatusByName(initialStatus);
                    var createdItem = this._unitOfWork.OfferedItemRepository.Create(item);
                    this.SetNewPictures(model, createdItem);
                    this._unitOfWork.SaveChanges();
                }

                //TODO: uncomment
                //SetImagesUrl(model.Image);

                return(model);
            }
            catch (Exception ex)
            {
                throw new BusinessLogicException("Creating offered item error. " + ex.Message);
            }
        }
Пример #3
0
        /// <summary>
        /// Creates new Offer Item
        /// </summary>
        /// <param name="model">base model for new offer item</param>
        /// <returns>OfferedItemViewModel</returns>
        public OfferedItemViewModel CreateOfferedItem(OfferedItemViewModel model)
        {
            const string initialStatus = "Активний";

            try
            {
                if (model != null)
                {
                    OfferedItem item = model;
                    item.User              = _unitOfWork.UsersRepository.GetUserById(model.UserId);
                    item.GoodsCategory     = _unitOfWork.GoodsCategoryRepository.GetGoodsCategoryById(model.GoodsCategoryId);
                    item.Status            = _unitOfWork.StatusRepository.GetStatusByName(initialStatus);
                    item.OfferedItemImages = UploadImagesToStorage(model.Images, model.Id);
                    var createdItem = _unitOfWork.OfferedItemRepository.Create(item);

                    _unitOfWork.SaveChanges();

                    model.Images = ConvertOfferedItemImagesToViewModel(item.OfferedItemImages).ToArray();
                }
                return(model);
            }
            catch (Exception ex)
            {
                throw new BusinessLogicException("Creating offered item error. " + ex.Message);
            }
        }
Пример #4
0
        /// <summary>
        /// Initializes offered item view model based on offer item entity
        /// </summary>
        /// <param name="item">offer item</param>
        /// <returns>OfferedItemViewModel</returns>
        public OfferedItemViewModel InitializeOfferedItemViewModel(OfferedItem item)
        {
            OfferedItemViewModel model = new OfferedItemViewModel()
            {
                Description       = item.Description,
                Name              = item.Name,
                Id                = item.Id,
                GoodsCategoryName = item.GoodsCategory.Name,
                StatusName        = item.Status.StatusName,
                UserId            = item.UserId,
                GoodsTypeName     = item.GoodsCategory.GoodsType.Name
            };

            model.Image = this._unitOfWork.OfferImagesRepository.Read().Where(a => a.OfferedItemId == model.Id)
                          .Select(a => new OfferedItemImageViewModel
            {
                //TODO: замінити на ImageName = _imgService.GetImageUrl(a.ImageUrl),
                ImageUrl      = a.ImageUrl,
                IsMain        = a.IsMain,
                OfferedItemId = model.Id,
                Id            = a.Id
            })
                          .ToArray();
            return(model);
        }
Пример #5
0
        /// <summary>
        /// Removes isMain flag from all images of specified Offered item
        /// </summary>
        /// <param name="item"></param>
        private void ClearMainImageStatus(OfferedItem item)
        {
            var images = this._unitOfWork.OfferImagesRepository.GetOfferedItemImageByOfferItemId(item.Id);

            foreach (var thing in images)
            {
                thing.IsMain = false;
            }
        }
Пример #6
0
        public ActionResult Trade(FormCollection values)
        {
            // Pārbaudīt, vai lietotājam ir kaut viens priekšmets inventārā
            if (!CanTrade())
            {
                return(View("Index"));
            }

            // Pārbadudīt, vai tika mēģināts tirgoties ar lietotāju, kuram nav priekšmetu inventārā
            var wantedUserID = values["WantedUserID"];

            if (db.Inventories.Where(i => i.UserID == wantedUserID).Count() == 0)
            {
                return(View("Error"));
            }

            //Izveidot jaunu tirgošanās pieprasījumu
            var offer = new Offers();

            offer.ID            = Guid.NewGuid().ToString();
            offer.OfferedItemID = offer.ID;
            offer.WantedItemID  = offer.ID;
            offer.OfferStatus   = "Pending";

            // Izveidot jaunu piedāvāto priekšmetu
            var offeredItem = new OfferedItem();

            offeredItem.UserID      = User.Identity.GetUserId();
            offeredItem.EquipmentID = int.Parse(values["OfferedItemID"]);

            // Izveidot jaunu vēlāmo priekšmetu
            var wantedItem = new WantedItem();

            wantedItem.UserID      = values["WantedUserID"];
            wantedItem.EquipmentID = int.Parse(values["WantedItemID"]);

            // Sasaistīt vēlāmo un piedāvāto priekšmetu ar tirgošanās piedāvājumu
            offer.OfferedItem = offeredItem;
            offer.WantedItem  = wantedItem;

            // Saglabāt ierakstus datu bāzē
            db.Offers.Add(offer);
            db.OfferedItem.Add(offeredItem);
            db.WantedItem.Add(wantedItem);
            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
Пример #7
0
        /// <summary>
        /// Initializes offered item view model based on offer item entity
        /// </summary>
        /// <param name="item">offer item</param>
        /// <returns>OfferedItemViewModel</returns>
        public OfferedItemViewModel InitializeOfferedItemViewModel(OfferedItem item)
        {
            OfferedItemViewModel model = new OfferedItemViewModel()
            {
                Description       = item.Description,
                Name              = item.Name,
                Id                = item.Id,
                GoodsCategoryName = item.GoodsCategory.Name,
                StatusName        = item.Status.StatusName,
                UserId            = item.UserId,
                GoodsTypeName     = item.GoodsCategory.GoodsType.Name
            };

            model.Images = this._unitOfWork.OfferImagesRepository.Read()
                           .Where(a => a.OfferedItemId == model.Id)
                           .Select(ConvertOfferedItemImageToViewModel)
                           .ToArray();
            return(model);
        }
Пример #8
0
 /// <summary>
 /// Configures model creation
 /// </summary>
 /// <param name="modelBuilder">modelBuilder to configure Model Creation</param>
 protected override void OnModelCreating(ModelBuilder modelBuilder)
 {
     User.Configure(modelBuilder);
     Phone.Configure(modelBuilder);
     Address.Configure(modelBuilder);
     UserAddress.Configure(modelBuilder);
     Role.Configure(modelBuilder);
     Organization.Configure(modelBuilder);
     OrgAddress.Configure(modelBuilder);
     ExternalContact.Configure(modelBuilder);
     Membership.Configure(modelBuilder);
     Currency.Configure(modelBuilder);
     BankAccount.Configure(modelBuilder);
     OrgAccount.Configure(modelBuilder);
     Balance.Configure(modelBuilder);
     Target.Configure(modelBuilder);
     FinOp.Configure(modelBuilder);
     Tag.Configure(modelBuilder);
     TagFinOp.Configure(modelBuilder);
     Event.Configure(modelBuilder);
     EventImage.Configure(modelBuilder);
     Complaint.Configure(modelBuilder);
     GoodsType.Configure(modelBuilder);
     GoodsCategory.Configure(modelBuilder);
     OfferedItem.Configure(modelBuilder);
     RequestedItem.Configure(modelBuilder);
     BankImport.Configure(modelBuilder);
     BankImportDetail.Configure(modelBuilder);
     PasswordReset.Configure(modelBuilder);
     BannedUser.Configure(modelBuilder);
     BannedOrganization.Configure(modelBuilder);
     SubscribeOrganization.Configure(modelBuilder);
     Status.Configure(modelBuilder);
     OfferedItemImage.Configure(modelBuilder);
     RequestedItemImage.Configure(modelBuilder);
     UserResponse.Configure(modelBuilder);
     OrganizationResponse.Configure(modelBuilder);
     Donation.Configure(modelBuilder);
     Bank.Configure(modelBuilder);
     AutoImportIntervals.Configure(modelBuilder);
 }
        public void GetSections_VerifyInstructor()
        {
            using (OdsRepository repository = new OdsRepository())
            {
                IList <Section> sections = repository.GetSections(CourseID.FromString("ENGL", "101"));

                ISection sec = sections.Where(s => s.Offered != null && s.Offered.Where(o => !string.IsNullOrWhiteSpace(o.InstructorID) &&
                                                                                        !string.IsNullOrWhiteSpace(o.InstructorName)
                                                                                        )
                                              .Count() > 0)
                               .Take(1).Single();

                OfferedItem item = sec.Offered.Where(o => !string.IsNullOrWhiteSpace(o.InstructorID) &&
                                                     !string.IsNullOrWhiteSpace(o.InstructorName)
                                                     )
                                   .Take(1).Single();

                string expected = _dataVerifier.GetInstructorName(item.InstructorID);

                Assert.AreEqual(expected, item.InstructorName);
            }
        }
Пример #10
0
        /// <summary>
        /// Set pictures, received as param for specified offered item id
        /// </summary>
        /// <param name="images">IEnumerable of offered item image view models</param>
        /// <param name="item">offered item entity</param>
        /// <returns>Offered Item Image View models</returns>
        public IEnumerable <OfferedItemImageViewModel> SetOfferedItemPictures(IEnumerable <OfferedItemImageViewModel> images, OfferedItem item)
        {
            var mainImage = images.Where(a => a.IsMain == true).Take(1).ToArray();

            if (mainImage.Count() != 0)
            {
                this.ClearMainImageStatus(item);
                if (mainImage[0].Id != 0 && mainImage[0].IsMain == true)
                {
                    this._unitOfWork.OfferImagesRepository.Get(mainImage[0].Id).IsMain = true;
                }
            }
            IEnumerable <OfferedItemImage> newImages = images.Where(a => a.Id == 0).Select(
                image => new OfferedItemImage
            {
                ImageUrl      = image.ImageUrl,
                IsMain        = image.IsMain,
                OfferedItemId = image.OfferedItemId,
                OfferedItem   = item
            }
                );
            IEnumerable <OfferedItemImage> incomingImages = images.Select(
                image => new OfferedItemImage
            {
                Id            = image.Id,
                ImageUrl      = image.ImageUrl,
                IsMain        = image.IsMain,
                OfferedItemId = item.Id
            }
                ).ToList();
            IEnumerable <OfferedItemImage> missingImages = this._unitOfWork.OfferImagesRepository.GetOfferedItemImageByOfferItemId(item.Id).Except(incomingImages, new DAL.Comparers.OfferedItemImageComparator());

            foreach (var stuff in missingImages)
            {
                this._unitOfWork.OfferImagesRepository.Delete(stuff.Id);
            }
            foreach (var picture in newImages)
            {
                this._unitOfWork.OfferImagesRepository.Create(picture);
            }
            return(images);
        }
Пример #11
0
        /// <summary>
        /// Sets specified images of specified offer item
        /// </summary>
        /// <param name="model">Offer item view model</param>
        /// <param name="item">Offered item entity</param>
        /// <returns>List of offered item images</returns>
        public OfferedItemImageViewModel[] SetNewPictures(OfferedItemViewModel model, OfferedItem item)
        {
            int i = 0;
            Dictionary <OfferedItemImage, Task <string> > d = new Dictionary <OfferedItemImage, Task <string> >();

            foreach (var thing in model.Image)
            {
                var newImage = new OfferedItemImage
                {
                    IsMain        = thing.IsMain,
                    OfferedItemId = item.Id
                };
                var t = _imgService.UploadImage(Convert.FromBase64String(model.Base64Images[i++]));

                d.Add(newImage, t);
            }
            Task.WhenAll(d.Values);

            foreach (var element in d)
            {
                element.Key.ImageUrl = element.Value.Result;
            }

            this._unitOfWork.OfferImagesRepository.CreateMany(d.Keys.ToList());
            return(model.Image);
        }
Пример #12
0
        public void NullInstructorName()
        {
            OfferedItem actual = new OfferedItem();

            Assert.IsTrue(actual.InstructorName == string.Empty);
        }
Пример #13
0
        /// <summary>
        /// Set pictures, received as param for specified offered item id
        /// </summary>
        /// <param name="incomingImages">IEnumerable of offered item image view models</param>
        /// <param name="offerItem">offered item entity</param>
        /// <returns>Offered Item Image View models</returns>
        public void SetOfferedItemPictures(IEnumerable <OfferedItemImageViewModel> incomingImages, OfferedItem offerItem)
        {
            //images in Db
            List <OfferedItemImage> storedImages = offerItem.OfferedItemImages.ToList();

            //new images user set
            List <OfferedItemImageViewModel> incomeNewImages = incomingImages.Select(i => i).Where(i => !String.IsNullOrEmpty(i.Base64Data)).ToList();

            if (incomeNewImages.Any(i => i.IsMain))
            {
                storedImages.ForEach(i => i.IsMain = false);
            }

            //in case when only main image was changed
            storedImages.ForEach(si => si.IsMain = incomingImages.
                                                   Select(i => i).
                                                   Where(i => i.Id == si.Id).
                                                   FirstOrDefault()
                                                   ?.IsMain ?? si.IsMain);

            //old images stored in Db
            var incomeOldImages      = incomingImages.Select(i => i).Where(i => String.IsNullOrEmpty(i.Base64Data));
            var incomeOldImagesModel = ConvertOfferedItemImagesVmToModels(incomeOldImages);

            //old images which we have removed from offerItem.Images
            var uslesImages = storedImages.Where(l2 => !incomeOldImagesModel.Any(l1 => l1.ImageUrl == l2.ImageUrl)).ToList();

            foreach (var stuff in uslesImages)
            {
                _unitOfWork.OfferImagesRepository.Delete(stuff.Id);
                storedImages.Remove(stuff);
                _imgService.DeleteImageAsync(AzureStorageConfiguration.GetImageNameFromUrl(stuff.ImageUrl));
            }

            //save new images
            var newImages = UploadImagesToStorage(incomeNewImages, offerItem.Id);

            foreach (var picture in newImages)
            {
                var newImg = _unitOfWork.OfferImagesRepository.Create(picture);
                storedImages.Add(newImg);
            }

            offerItem.OfferedItemImages = storedImages;
        }