public static Ticket ToTicket(this TicketRead ticketAzure)
 {
     var ticket = new Ticket();
     ticket.Id = Guid.Parse(ticketAzure.RowKey);
     ticket.Attendee = ticketAzure.PartitionKey;
     ticket.AccessCode = ticketAzure.AccessCode;
     if (ticketAzure.TicketStatus == "Paid")
     {
         ticket.Status = TicketStatus.Paid;
     }
     if (ticketAzure.TicketStatus == "Pending")
     {
         ticket.Status = TicketStatus.Pending;
     }
     ticket.TotalPrice = ticketAzure.TotalPrice;
     ticket.ParentEvent = new Event()
     {
         Name = ticketAzure.ParentEventName,
         Description = ticketAzure.ParentEventDescription,
         EventDate = ticketAzure.ParentEventDate
     };
     return ticket;
 }
        public void AddTicket(Ticket ticket)
        {
            var ticketToAdd = ticket.ToTicketRead();
            TableOperation addOperation = TableOperation.InsertOrReplace(ticketToAdd);
            _tableTicktes.Execute(addOperation);

            _cache.InvalidateCache(GenerateMyTicketsKey(ticketToAdd.PartitionKey));
        }
        public void DeleteTicket(Ticket ticket)
        {
            string partitionKey = ticket.Attendee;
            string rowKey = ticket.Id.ToString();
            var ticketToDelete = new TicketRead() { PartitionKey = partitionKey, RowKey = rowKey, ETag = "*" };

            TableOperation deleteOperation = TableOperation.Delete(ticketToDelete);
            _tableTicktes.Execute(deleteOperation);

            // Invalidate cache
            _cache.InvalidateCache(GenerateMyTicketsKey(partitionKey));
        }
        public void ConfirmTicket(Ticket ticket)
        {
            string partitionKey = ticket.Attendee;
            string rowKey = ticket.Id.ToString();
            var ticketToUpdate = new DynamicTableEntity { PartitionKey = partitionKey, RowKey = rowKey, ETag = "*" };
            Dictionary<string, EntityProperty> newProperties = new Dictionary<string, EntityProperty>();
            newProperties.Add("TicketStatus", new EntityProperty("Paid"));
            TableOperation updateOperation = TableOperation.Merge(ticketToUpdate);
            _tableTicktes.Execute(updateOperation);

            _cache.InvalidateCache(GenerateMyTicketsKey(ticket.Attendee));
        }