public async Task <IActionResult> Details(int id) { Models.Territory territory = await _unitOfWork.Territory.GetFirstOrDefaultAsync(t => t.Id == id); PublisherTerritory publisherTerritoryObj = new PublisherTerritory() { Territory = territory, TerritoryId = territory.Id }; return(View(publisherTerritoryObj)); }
public async Task <IActionResult> Details(PublisherTerritory publisherTerritory) { if (ModelState.IsValid) { var claimsIdentity = (ClaimsIdentity)User.Identity; var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier); publisherTerritory.ApplicationUserId = claim.Value; var applUser = await _unitOfWork.ApplicationUser.GetFirstOrDefaultAsync(u => u.Id == publisherTerritory.ApplicationUserId); var territoryFromDb = await _unitOfWork.Territory.GetFirstOrDefaultAsync(t => t.Id == publisherTerritory.TerritoryId); if (territoryFromDb == null) { return(RedirectToAction(nameof(Index))); } if (territoryFromDb.IsTaken == true) { _unitOfWork.Territory.Update(territoryFromDb); return(RedirectToAction(nameof(Index))); } //Look in DB to see if that publisher territory exist var publisherTerritoryFromDb = await _unitOfWork.PublisherTerritory.GetFirstOrDefaultAsync( t => t.ApplicationUserId == claim.Value && t.TerritoryId == publisherTerritory.TerritoryId, includeProperties : "Territory"); if (publisherTerritoryFromDb == null) { PublisherTerritory publisherTerritoryToBeAdded = new PublisherTerritory(); publisherTerritoryToBeAdded.Territory = territoryFromDb; publisherTerritoryToBeAdded.ApplicationUser = applUser; publisherTerritoryToBeAdded.TerritoryId = publisherTerritory.TerritoryId; publisherTerritoryToBeAdded.ApplicationUserId = claim.Value; publisherTerritoryToBeAdded.Territory.IsTaken = true; publisherTerritoryToBeAdded.Territory.CurrentPub = applUser.FirstName + " " + applUser.LastName; publisherTerritoryToBeAdded.Territory.DateCurrentPub = DateTime.Now; await _unitOfWork.PublisherTerritory.AddAsync(publisherTerritoryToBeAdded); } else { _unitOfWork.PublisherTerritory.Update(publisherTerritoryFromDb); } _unitOfWork.Save(); return(RedirectToAction(nameof(Index))); } else { var territory = await _unitOfWork.Territory.GetFirstOrDefaultAsync(t => t.Id == publisherTerritory.TerritoryId); var publisherTerritoryObj = new PublisherTerritory() { Territory = territory, TerritoryId = territory.Id }; _unitOfWork.Save(); return(View(publisherTerritoryObj)); } }