/// <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); } }
/// <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); } }
/// <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); } }
/// <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); }
/// <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; } }
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")); }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }
public void NullInstructorName() { OfferedItem actual = new OfferedItem(); Assert.IsTrue(actual.InstructorName == string.Empty); }
/// <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; }