public IActionResult DeleteConfirmed(Guid id) { AppUser user = _userManager.FindByNameAsync(User.Identity.Name).Result; if (user == null || user.Exchanges.Count <= 0) { return(RedirectToAction(nameof(Index))); } // ExchangeUserModel userExchange = user.Exchanges.Where(e => e.Id == id).FirstOrDefault(); Exchange exchange = _exchangeRepository.FindBy(e => e.Id == id).FirstOrDefault(); if (exchange == null || exchange.Sender.Id != user.Id) { return(RedirectToAction(nameof(Index))); } ExchangeUserModel userExchangeModel = _exchangeUserModelRepository.FindBy(eu => eu.Exchange.Id == exchange.Id && eu.AppUser.Id == user.Id).FirstOrDefault(); if (userExchangeModel == null) { return(RedirectToAction(nameof(Index))); } if (exchange.Sender.Id == user.Id || user.IsModerator) { for (int i = 0; i < exchange.Products.Count; i++) { if (exchange.Products.Count > 0) { exchange.Products[i].Exchange = null; _productRepository.Update(exchange.Products[i]); } } for (int i = 0; i < exchange.Offers.Count; i++) { if (exchange.Offers.Count > 0) { for (int j = 0; j < exchange.Offers[i].Products.Count; j++) { exchange.Offers[i].Products[j].Offer = null; exchange.Offers[i].Products[j].Exchange = null; _productRepository.Update(exchange.Offers[i].Products[j]); } _offerRepository.Delete(exchange.Offers[i].Id); } } user.Exchanges.Remove(userExchangeModel); _exchangeRepository.Delete(exchange.Id); _userManager.UpdateAsync(user); } return(RedirectToAction(nameof(Index))); }
public IActionResult Create([Bind("ExchangeNotes,PhotoUrl,Products")] Exchange exchange) { if (ModelState.IsValid) { var user = _userManager.FindByNameAsync(User.Identity.Name).Result; exchange.Sender = user; // current user exchange.SenderId = user.Id; exchange.Status = ExchangeStatus.Created; exchange.Products = exchange.Products.Where(p => !string.IsNullOrEmpty(p.Name) && !string.IsNullOrEmpty(p.Price)).ToList(); foreach (Product p in exchange.Products) { p.OriginCountry = exchange.Sender.Country; } _exchangeRepository.Insert(exchange); //foreach() ExchangeUserModel exchangeUserModel = new ExchangeUserModel { UserExchangeRole = UserExchangeRole.Sender, Exchange = exchange, AppUser = user, UpdatedAt = DateTime.Now }; user.Exchanges.Add(exchangeUserModel); _exchangeUserModelRepository.Insert(exchangeUserModel); _userManager.UpdateAsync(user); return(RedirectToAction(nameof(Index))); } return(View(exchange)); }