public IActionResult GetUserPassAvaiable(String uId) { try { var list = _iUserPassService.GetAllUserPass(_ => _.UserUid == uId && _.WillExpireAt > DateTime.Now, _ => _.UsingTickets, _ => _.Pass).ToList(); var result = new List <UserPassVM>(); for (int i = list.Count - 1; i > -1; i--) { var userPass = list[i]; int used = 0; int total = userPass.UsingTickets.Count; for (int j = 0; j < total; j++) { var ticket = userPass.UsingTickets.ToList()[j]; if (ticket.UsedAt != null) { used++; } } userPass.UsingTickets = null; if (used == total) { list.RemoveAt(i); } else { var userPassVm = _mapper.Map <UserPassVM>(userPass); userPassVm.NumberOfUsed = used; userPassVm.Pass.UserPasses = null; result.Add(userPassVm); } } return(Ok(result)); } catch (Exception e) { return(BadRequest(e)); } }
public IActionResult GetPass(Guid id) { try { var pass = _iPassService.GetAllPass(_ => _.Id == id, _ => _.Collections).FirstOrDefault(); if (pass == null) { return(NotFound()); } var result = _mapper.Map <PassVM>(pass); result.Collections = new List <CollectionVM>(); pass.Collections.ToList().ForEach(_ => { var collection = _iCollectionService.GetAllCollection(v => v.Id == _.Id, v => v.TicketTypeInCollections).FirstOrDefault(); var collectionVM = _mapper.Map <CollectionVM>(collection); collectionVM.TicketTypes = new List <TicketTypeDetailVM1>(); var ticketTypeInCollections = collection.TicketTypeInCollections; ticketTypeInCollections.ToList().ForEach(t => { //var ticketType = _iTicketTypeService.GetTicketTypeById(t.TicketTypeId); var ticketType = _iTicketTypeService.GetAllTicketType(_ => _.Id == t.TicketTypeId, _ => _.Atrraction).FirstOrDefault(); var tickeTypeVM = _mapper.Map <TicketTypeDetailVM1>(ticketType); collectionVM.TicketTypes.Add(tickeTypeVM); }); result.Collections.Add(collectionVM); }); var userPasses = _iUserPassService.GetAllUserPass(_ => _.PassId == id && _.Rate != 0); var totalRate = userPasses.Count(); var rateSum = userPasses.Sum(_ => _.Rate); result.Rate = totalRate != 0 ? (double)rateSum / (double)totalRate : 5; result.Feedbacks = userPasses.Select(_ => _.Feedback).ToList(); return(Ok(result)); } catch (Exception e) { return(BadRequest(e.Message)); } }