public async Task <BaseResult <DisplayTicketModel> > BookTicket(string userId, BookTicketModel model) { BaseResult <DisplayTicketModel> result = new BaseResult <DisplayTicketModel>(); try { if (model != null && !String.IsNullOrWhiteSpace(userId)) { //Get User var user = await _userRepository.GetUser(userId); if (user != null) { TicketDataModel dataModel = Convert(model); dataModel.Id = Guid.NewGuid().ToString(); dataModel.UserId = user.Id; dataModel.TicketStatus = TicketStatus.Booked; //insert ticket var ticketCollection = _database.GetCollection <TicketDataModel>("cTickets"); await ticketCollection.InsertOneAsync(dataModel); //retrieve ticket var filter = Builders <TicketDataModel> .Filter.Eq("Id", dataModel.Id); var bookedTicket = await ticketCollection.Find(filter).ToListAsync(); if (bookedTicket != null && bookedTicket.Count == 1) { DisplayTicketModel displayModel = Convert(bookedTicket.FirstOrDefault()); result.Value = displayModel; result.Suceeded = true; } } else { result.Suceeded = false; result.AddError("user is unauthenticated"); } } else { result.Suceeded = false; result.SetRequiredFieldsMissing("Fields missing"); } } catch (Exception) { result.Suceeded = false; result.AddError("Error while booking ticket, please try after some time."); } return(result); }
private DisplayTicketModel Convert(TicketDataModel dataModel) { DisplayTicketModel model = null; if (dataModel != null) { model = new DisplayTicketModel(); model.InjectFrom(dataModel); model.TicketStatus = dataModel.TicketStatus.ToString(); model.TicketType = dataModel.TicketType.ToString(); } return(model); }