Example #1
0
        private IReceipt SubmitReceipt(SubmitReceipt request)
        {
            //Check ticket is available
            var ticket = TicketRepo.GetTicket(request.TicketId);

            if (ticket == null)
            {
//                throw new Exception(TicketMessage.TicketDoesNotFound);
            }

            if (ticket.Status.Equals((int)TicketConstant.Lock))
            {
//                throw new Exception(TicketMessage.TicketIsNotAvail);
            }

            //Check departure date
            if (!DateTime.TryParseExact(request.DepartureDate, "dd-MM-yyyy", CultureInfo.InvariantCulture,
                                        DateTimeStyles.None, out var departureDate))
            {
//                throw new Exception(TicketMessage.InvalidDepartureDate);
            }

            //Check ticket does not booking before
            var status =
                TicketStatusRepo.GetTicketStatus(ticket.UserAuthId, ticket.Code, departureDate, ticket.DepartureTime);

            if (status.Status != (int)TicketStatusConstant.Available)
            {
//                throw new Exception(TicketMessage.TicketIsNotAvail);
            }

            //Create new receipt
            var newReceipt = new Receipt.Repository.OrmLite.Receipt();

            newReceipt.PopulateWith(ticket);
            newReceipt.AgentId       = Convert.ToInt32(base.UserSession.UserAuthId);
            newReceipt.DepartureDate = departureDate;
            newReceipt.Note          = request.Note;
            newReceipt.Status        = (int)ReceiptStatusConstant.Submited;

            //Generate new code
            var code = ReceiptRepo.GenerateNewCode(ConfigUtils.GetAppSetting("receipt.code.len", 6));

            newReceipt.Code = code;

            //Create new receipt
            var receipt = ReceiptRepo.CreateReceipt(newReceipt);

            //Update ticket status
            var newStatus = TicketStatusRepo.UpdateTicketStatus(ticket.UserAuthId, ticket.Code, departureDate,
                                                                ticket.DepartureTime, (int)TicketStatusConstant.Booked);

            return(receipt);
        }
Example #2
0
        public object Post(SubmitReceipt request)
        {
            //Create new receipt
            var receipt = SubmitReceipt(request);

            return(new SubmitReceiptResponse()
            {
                Status = (int)CommonStatus.Success,
                Data = receipt.ConvertTo <Receipt.ServiceModel.Types.Receipt>()
            });
        }