예제 #1
0
        public static bool RefundTicket(Int64 GymTicketId)
        {
            using (ConnectorBase conn = ConnectorBase.NewInstance())
            {
                Query qry = Query.New <GymTicket>()
                            .Update(GymTicket.Columns.Status, GymTicketStatus.Refunded)
                            .Update(GymTicket.Columns.RedeemDate, DateTime.UtcNow)
                            .Where(GymTicket.Columns.GymTicketId, GymTicketId)
                            .AND(GymTicket.Columns.Status, dg.Sql.WhereComparision.NotEqualsTo, GymTicketStatus.Refunded);

                bool result = qry.Execute(conn) == 1;

                if (result)
                {
                    decimal Amount    = 0m;
                    Int64   AppUserId = 0;
                    using (DataReaderBase reader =
                               Query.New <GymTicket>()
                               .Select(GymTicket.Columns.Amount)
                               .AddSelect(GymTicket.Columns.AppUserId)
                               .Where(GymTicket.Columns.GymTicketId, GymTicketId)
                               .LimitRows(1)
                               .ExecuteReader(conn))
                    {
                        if (reader.Read())
                        {
                            Amount    = reader.GetDecimal(0);
                            AppUserId = reader.GetInt64(1);
                        }
                    }

                    if (AppUserId > 0)
                    {
                        AppUserCreditController.AddCreditToAppUser(AppUserId, Amount);
                    }
                }

                return(result);
            }
        }