Exemplo n.º 1
0
        /// <summary>
        /// Book flight ticket
        /// </summary>
        /// <param name="flights"></param>
        /// <returns></returns>
        public async Task <SaveStatus> Save(FlightsIDTO flights)
        {
            try
            {
                DataTable dtFlightDetails = new DataTable();
                dtFlightDetails.Columns.Add("ArrivalCity", typeof(string));
                dtFlightDetails.Columns.Add("ArrivalTime", typeof(string));
                dtFlightDetails.Columns.Add("DepartureCity", typeof(string));
                dtFlightDetails.Columns.Add("DepartureTime", typeof(string));
                dtFlightDetails.Columns.Add("Duration", typeof(string));
                dtFlightDetails.Columns.Add("AircraftCode", typeof(string));

                DataTable dtPassengerDetails = new DataTable();
                dtPassengerDetails.Columns.Add("FirstName", typeof(string));
                dtPassengerDetails.Columns.Add("LastName", typeof(string));
                dtPassengerDetails.Columns.Add("Age", typeof(int));
                dtPassengerDetails.Columns.Add("Nationality", typeof(string));
                dtPassengerDetails.Columns.Add("PassportNo", typeof(string));

                foreach (var flightDet in flights.FlightDetails)
                {
                    dtFlightDetails.Rows.Add(flightDet.ArrivalCity, flightDet.ArrivalTime, flightDet.DepartureCity, flightDet.DepartureTime, flightDet.Duration, flightDet.AircraftCode);
                }

                foreach (var passengerDet in flights.PassengerDetails)
                {
                    dtPassengerDetails.Rows.Add(passengerDet.FirstName, passengerDet.LastName, passengerDet.Age, passengerDet.Nationality, passengerDet.PassportNo);
                }

                using (IDbConnection conn = Connection)
                {
                    var param = new DynamicParameters();
                    param.Add("@UserID", flights.UserID, DbType.Int32, direction: ParameterDirection.Input);
                    param.Add("@Email", flights.Email, DbType.String, direction: ParameterDirection.Input);
                    param.Add("@MobileNo", flights.MobileNo, DbType.String, direction: ParameterDirection.Input);
                    param.Add("@Status", flights.TicketStatus, DbType.String, direction: ParameterDirection.Input);
                    param.Add("@NoOfPersons", flights.NoOfPersons, DbType.Int32, direction: ParameterDirection.Input);
                    param.Add("@PerTicketPrice", flights.PerTicketPrice, DbType.Double, direction: ParameterDirection.Input);
                    param.Add("@TotalTicketPrice", flights.TotalTicketPrice, DbType.Double, direction: ParameterDirection.Input);
                    param.Add("@FlightDetails", dtFlightDetails.AsTableValuedParameter("dbo.FlightDetails"));
                    param.Add("@PassengerDetails", dtPassengerDetails.AsTableValuedParameter("dbo.PassengerDetails"));
                    param.Add("@ReturnValue", DbType.Int32, direction: ParameterDirection.ReturnValue);

                    await conn.ExecuteAsync("usp_BookFlight", param, commandType : CommandType.StoredProcedure);

                    var        retValue = param.Get <int>("@ReturnValue");
                    SaveStatus status   = (SaveStatus)retValue;
                    return(status);
                }
            }
            catch (Exception e)
            {
                return(SaveStatus.Failure);
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Save([FromBody] FlightsIDTO flights)
        {
            SaveStatus status = await _flightRepo.Save(flights);

            return(Ok());
        }