Beispiel #1
0
        /// <summary>Formats the booking data as ListView item.</summary>
        /// <param name="booking">The booking data.</param>
        /// <returns></returns>
        private ListViewItem FormatBookingDataAsListViewItem(IBookingData booking)
        {
            var props = new List <string>();

            foreach (var prop in typeof(IBookingData).GetProperties())
            {
                string value = "";
                if (typeof(IEnumerable).IsAssignableFrom(prop.PropertyType) && prop.PropertyType != typeof(String))
                {
                    if (prop.GetValue(booking) is IList)
                    {
                        foreach (var collectionItem in prop.GetValue(booking) as IList)
                        {
                            value += $"{collectionItem} ";
                        }
                    }
                }
                else
                {
                    value = prop.GetValue(booking).ToString();
                }
                props.Add(value);
            }
            return(new ListViewItem(props.ToArray()));
        }
Beispiel #2
0
        public async Task Should_Load_AValidReservation()
        {
            var codigo = string.Empty;

            using (var dbConnection = SqlExecutor.OpenNewDbConnection())
            {
                var connection = await dbConnection.GetPagedAsync <RESERVAS1>(1, 2).ConfigureAwait(false);

                var item = connection.FirstOrDefault <RESERVAS1>();
                codigo = item.NUMERO_RES;
            }
            IBookingData booking = null;
            Stopwatch    start   = new Stopwatch();

            start.Start();

            booking = await _bookingDataServices.GetDoAsync(codigo).ConfigureAwait(false);

            //Assert.DoesNotThrowAsync(async () => booking = await _bookingDataServices.GetDoAsync(codigo).ConfigureAwait(false));
            var elapse = start.ElapsedMilliseconds;

            start.Stop();
            TestContext.Out.WriteLine("Elapsed booking retrieval time " + elapse);
            Assert.NotNull(booking);
            Assert.IsTrue(booking.Valid);
            Assert.NotNull(booking.Value);
            Assert.AreEqual(booking.Value.NUMERO_RES, codigo);
        }
        /// <summary>
        ///  Deleta an asynchronous data
        /// </summary>
        /// <param name="booking"></param>
        /// <returns>True or False in case no deleting</returns>
        public async Task <bool> DeleteAsync(IBookingData booking)
        {
            var book  = booking.Value;
            var value = await _dataDeleter.DeleteAsync(book).ConfigureAwait(false);

            return(value);
        }
        private async Task <bool> ExecuteSecondDriverResult(IBookingData request)
        {
            if (request == null)
            {
                return(false);
            }
            if (request.Value == null)
            {
                return(false);
            }
            try
            {
                using (var connection = SqlExecutor.OpenNewDbConnection())
                {
                    BookingViewObject dto = request.Value;
                    var secondDriverStore = _queryStoreFactory.GetQueryStore();
                    secondDriverStore.AddParamCount(QueryType.QueryCity, dto.DRV2_CITY);
                    secondDriverStore.AddParamCount(QueryType.QueryCountry, dto.DRV2_ID_CARD_COU_CODE);
                    secondDriverStore.AddParamCount(QueryType.QueryProvince, dto.DRV2_ZIP_CODE);
                    var secondDriverQuery = secondDriverStore.BuildQuery();
                    var driverResult      = await connection.QueryMultipleAsync(secondDriverQuery).ConfigureAwait(false);

                    request.SecondDriverCityDto     = SelectionHelpers.WrappedSelectedDto <POBLACIONES, CityViewObject>(request.Value.DRV2_CITY, _mapper, driverResult);
                    request.SecondDriverCountryDto  = SelectionHelpers.WrappedSelectedDto <Country, CountryViewObject>(request.Value.DRV2_ID_CARD_COU_CODE, _mapper, driverResult);
                    request.SecondDriverProvinceDto = SelectionHelpers.WrappedSelectedDto <PROVINCIA, ProvinceViewObject>(request.Value.DRV2_ZIP_CODE, _mapper, driverResult);
                }
            }
            catch (System.Exception ex)
            {
                throw new DataAccessLayerException("Parsing multiple query result error", ex);
            }
            return(true);
        }
        private bool ParseClientResult(IBookingData request, SqlMapper.GridReader reader)
        {
            if ((request == null) || (reader == null))
            {
                return(false);
            }
            if (request.Value == null)
            {
                return(false);
            }
            try
            {
                // client queries. Multiple Query are stacked when created so we need to fetch in the reverse order.
                request.DriverDto5 = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.OTRO3COND_RES2, _mapper, reader);

                request.DriverDto4 = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.OTRO2COND_RES2, _mapper, reader);

                request.DriverDto3 = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.OTROCOND_RES2, _mapper, reader);

                request.DriverDto2 = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.CONDUCTOR_RES1, _mapper, reader);

                request.Clients = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.CLIENTE_RES1, _mapper, reader);
            } catch (System.Exception ex)
            {
                throw new DataAccessLayerException("Parsing multiple query result error", ex);
            }
            return(true);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ModifyBookingForm"/> class.
 /// </summary>
 /// <param name="bookingData">The booking data.</param>
 public ModifyBookingForm(MainForm parent, IBookingData bookingData, Outlook.Application application)
 {
     this.parent             = parent;
     this.oldBookingData     = bookingData;
     this.outlookApplication = application;
     InitializeComponent();
     PopulateListViewItems();
     PrefillUserInputs(bookingData);
 }
Beispiel #7
0
        private IDictionary <string, object> CraftANewFareChange(IBookingData data)
        {
            IDictionary <string, object> dictionary = new Dictionary <string, object>();

            dictionary["DataObject"]   = data.Value;
            dictionary["Field"]        = "TARIFA_RES1";
            dictionary["ChangedValue"] = data.Value.TARIFA_RES1;
            return(dictionary);
        }
        public async Task <bool> SaveAsync(IBookingData domainObject)
        {
            if (!domainObject.Valid)
            {
                return(false);
            }
            var savedReservation = await _dataSaver.SaveAsync(domainObject.Value).ConfigureAwait(false);

            return(savedReservation);
        }
        public async Task <bool> DeleteAsync(IBookingData domainObject)
        {
            if (!domainObject.Valid)
            {
                return(false);
            }
            var dto    = domainObject.Value;
            var result = await _dataDeleter.DeleteAsync(dto).ConfigureAwait(false);

            return(result);
        }
        /// <summary>
        ///  Delete an asynchronous data object for booking.
        /// </summary>
        /// <param name="data">Data to be used</param>
        /// <returns>Returns true if the data is deleted with success.</returns>
        public async Task <bool> DeleteAsyncDo(IBookingData data)
        {
            if (data == null)
            {
                return(false);
            }
            var currentValue = data.Value;
            var simpleResult = await _dataDeleter.DeleteAsync(currentValue).ConfigureAwait(false);

            return(simpleResult);
        }
Beispiel #11
0
        /// <summary>Checks whether the location and time is free, then sends and returns whether was free.</summary>
        /// <param name="booking">The booking.</param>
        /// <returns>Location is free or not prior to booking.</returns>
        private void SendOutlookMeeting(IBookingData booking)
        {
            Console.WriteLine($"Sending {booking.ToString()}");
            try
            {
                foreach (TimeSpan time in booking.Times)
                {
                    var startDate = DateTime.Now.AddDays(booking.NumberOfDaysInFuture).Date + time;
                    var endDate   = startDate.AddMinutes(booking.DurationInMinutes);

                    // If booking day is blacklisted or not free, try the next time in the booking.
                    if (booking.DayBlackList.Contains(startDate.DayOfWeek))
                    {
                        Console.WriteLine($"{startDate} is blacklisted in this booking, booking not sent.");
                        continue;
                    }

                    bool isFree = LocationIsFree(startDate, booking.Location, new Outlook.Application());
                    if (!isFree)
                    {
                        Console.WriteLine($"{startDate} is not free at the specified location, booking not sent.");
                        continue;
                    }

                    var app = new Outlook.Application();
                    Outlook.AppointmentItem appointment = app.CreateItem(Outlook.OlItemType.olAppointmentItem);
                    appointment.MeetingStatus = Outlook.OlMeetingStatus.olMeeting;
                    appointment.Location      = booking.Location;
                    appointment.Start         = startDate;
                    appointment.End           = endDate;
                    appointment.Body          = booking.Body;
                    appointment.Subject       = booking.Subject;
                    appointment.Recipients.Add(booking.Location);
                    foreach (var recipient in booking.Recipients)
                    {
                        appointment.Recipients.Add(recipient);
                    }

                    appointment.Recipients.ResolveAll();
                    //appointment.Display();
                    appointment.Send();
                    Console.WriteLine($"{booking} sent.");
                    break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error: OutlookMeeting failed to send: {ex.Message}");
            }
        }
        /// <summary>
        ///  Get Booking Items
        /// </summary>
        /// <returns>This returns a list of booking items</returns>
        public async Task <IEnumerable <BookingItemsDto> > GetBookingItemsAsync(IBookingData bookingData)
        {
            IEnumerable <BookingItemsDto> bookingItems = new List <BookingItemsDto>();
            var data       = bookingData.Value;
            var queryStore = QueryStoreFactory.GetQueryStore();

            queryStore.AddParam(QueryType.QueryBookingItems, data.NUMERO_RES);
            var qs = queryStore.BuildQuery();

            using (var dbConnection = SqlExecutor.OpenNewDbConnection())
            {
                bookingItems = await dbConnection.QueryAsync <BookingItemsDto>(qs);
            }
            return(bookingItems);
        }
        /// <summary>Prefills the user inputs from the BookingData.</summary>
        /// <param name="bookingData">The booking data.</param>
        private void PrefillUserInputs(IBookingData bookingData)
        {
            bookingNameInput.Text          = bookingData.Name;
            bookingEnabledInput.Checked    = bookingData.Enabled;
            bookingTypeInput.SelectedItem  = bookingData.Type.ToString();
            bookingTimeInputPrimary.Value  = new DateTime(2018, 1, 1) + bookingData.Times[0]; // TODO: Replace this with foreach loop over each time.
            bookingLocationInput.Text      = bookingData.Location;
            bookingDurationInput.Value     = bookingData.DurationInMinutes;
            bookingDaysInFutureInput.Value = bookingData.NumberOfDaysInFuture;
            emailSubjectInput.Text         = bookingData.Subject;
            emailBodyInput.Text            = bookingData.Body;
            emailRecipientsInput.Text      = string.Join("\r\n", bookingData.Recipients);
            bookingTimes = new List <DateTimePicker>()
            {
                bookingTimeInputPrimary
            };

            foreach (var day in bookingData.DayBlackList)
            {
                var index = bookingDayBlackListInput.Items.IndexOf(day.ToString());

                bookingDayBlackListInput.SetSelected(index, true);
            }


            if (bookingData.Times.Count >= 2)
            {
                for (int i = 1; i < bookingData.Times.Count; i++)
                {
                    var bookingTimePickerOffset = new Size(0, 30);
                    var dateTimePickerPosition  = Point.Add(bookingTimes.Last().Location, bookingTimePickerOffset);
                    var bookingTimePicker       = new DateTimePicker();

                    bookingTimePicker.Location   = dateTimePickerPosition;
                    bookingTimePicker.Size       = bookingTimes.Last().Size;
                    bookingTimePicker.Format     = DateTimePickerFormat.Time;
                    bookingTimePicker.Value      = new DateTime(2018, 1, 1) + bookingData.Times[i];
                    bookingTimePicker.ShowUpDown = true;
                    bookingTimes.Add(bookingTimePicker);
                    this.Controls.Add(bookingTimePicker);
                    this.buttonRemoveBookingTime.Show();
                }
            }
            else
            {
                buttonRemoveBookingTime.Hide();
            }
        }
        /// <summary>
        ///  Save an asynchronous data object for booking.
        /// </summary>
        /// <param name="data">Data to be used</param>
        /// <returns>Value of the data</returns>
        public async Task <bool> SaveAsync(IBookingData data)
        {
            if ((data == null) || (!data.Valid))
            {
                return(false);
            }
            var value = data.Value;

            if (string.IsNullOrEmpty(data.Value.NUMERO_RES))
            {
                throw new DataAccessLayerException("Invalid Booking Number");
            }
            var boolValue = await _dataSaver.SaveAsync(value);

            return(boolValue);
        }
Beispiel #15
0
 /// <summary>
 /// The when days changed.
 /// </summary>
 /// <param name="eventData">
 /// The event data.
 /// </param>
 /// <param name="data">
 /// The data.
 /// </param>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public bool WhenDaysChanged(IDictionary <string, object> eventData, IBookingData data)
 {
     if (eventData.ContainsKey("DataSourcePath"))
     {
         var dataObject = data.Value;
         var field      = eventData["DataSourcePath"] as string;
         if ((field == "DIAS_RES1") &&
             dataObject.DIAS_RES1.HasValue &&
             dataObject.FSALIDA_RES1.HasValue)
         {
             var days = dataObject.DIAS_RES1;
             dataObject.FPREV_RES1 = dataObject.FSALIDA_RES1.Value.AddDays(days.Value);
             return(true);
         }
     }
     return(false);
 }
Beispiel #16
0
        /// <summary>Writes the booking data to json file.</summary>
        /// <param name="directory">The directory.</param>
        /// <param name="bookingData">The booking data.</param>
        /// <returns>The filename written to.</returns>
        public static string WriteBookingDataToJsonFile(string directory, IBookingData bookingData, string fullFileName = null)
        {
            StringBuilder sb = new StringBuilder();
            StringWriter  sw = new StringWriter(sb);

            Directory.CreateDirectory(directory); // Interestingly enough it doesnt matter whether this already exists when attempting to create.
            fullFileName = fullFileName ?? CreateBookingFileName(directory, bookingData.Name);

            //var invalidFileName = string.IsNullOrEmpty(fullFileName) ||
            //  fullFileName.IndexOfAny(Path.GetInvalidFileNameChars()) < 0;


            using (StreamWriter file = File.CreateText(fullFileName))
            {
                JsonSerializer serializer = new JsonSerializer();
                serializer.Serialize(file, bookingData);
            }

            return(fullFileName);
        }
Beispiel #17
0
        /// <summary>Deserializes every json file in a directory as BookingData.</summary>
        /// <param name="bookingDirectory">The booking directory.</param>
        /// <returns>BookingData</returns>
        private IList <IBookingData> DeserializeJsonToBookingData(string bookingDirectory)
        {
            IList <IBookingData> result        = new List <IBookingData>();
            DirectoryInfo        directoryInfo = new DirectoryInfo(bookingDirectory);

            Directory.CreateDirectory(bookingDirectory);

            foreach (var jsonFile in directoryInfo.GetFiles(fileSearchPattern))
            {
                using (StreamReader file = File.OpenText(jsonFile.FullName))
                {
                    using (JsonTextReader reader = new JsonTextReader(file))
                    {
                        JsonSerializer serializer = new JsonSerializer();
                        IBookingData   booking    = serializer.Deserialize <OutlookBookingData>(reader);
                        booking.FileName = jsonFile.FullName;
                        result.Add(booking);
                    }
                }
            }
            return(result);
        }
 private bool ParseOfficeResult(IBookingData request, SqlMapper.GridReader reader)
 {
     if ((request == null) || (reader == null))
     {
         return(false);
     }
     if (request.Value == null)
     {
         return(false);
     }
     try
     {
         // office queries. Requests are stacked so, retrieval shall be reversed.
         request.ReservationOfficeArrival   = SelectionHelpers.WrappedSelectedDto <OFICINAS, OfficeViewObject>(request.Value.OFIRETORNO_RES1, _mapper, reader);
         request.ReservationOfficeDeparture = SelectionHelpers.WrappedSelectedDto <OFICINAS, OfficeViewObject>(request.Value.OFISALIDA_RES1, _mapper, reader);
         request.OfficeDto = SelectionHelpers.WrappedSelectedDto <OFICINAS, OfficeViewObject>(request.Value.OFICINA_RES1, _mapper, reader);
     }
     catch (System.Exception ex)
     {
         throw new DataAccessLayerException("Parsing multiple query result error", ex);
     }
     return(true);
 }
 private bool ParseCountryResult(IBookingData request, SqlMapper.GridReader reader)
 {
     // null checking as usual.
     if ((request == null) || (reader == null))
     {
         return(false);
     }
     if (request.Value == null)
     {
         return(false);
     }
     try
     {
         // client queries. Multiple Query are stacked when created so we need to fetch in the reverse order.
         request.CountryDto3       = SelectionHelpers.WrappedSelectedDto <Country, CountryViewObject>(request.Value.PAISCOND_RES2, _mapper, reader);
         request.DriverCountryList = SelectionHelpers.WrappedSelectedDto <Country, CountryViewObject>(request.Value.PAISNIFCOND_RES2, _mapper, reader);
     }
     catch (System.Exception ex)
     {
         throw new DataAccessLayerException("Parsing multiple query result error", ex);
     }
     return(true);
 }
Beispiel #20
0
        /// <summary>
        /// The when date changed.
        /// </summary>
        /// <param name="eventData">
        /// The event data.
        /// </param>
        /// <param name="data">
        /// The data.
        /// </param>
        /// <returns>
        /// The <see cref="bool"/>.
        /// </returns>
        public bool WhenDateChanged(IDictionary <string, object> eventData, IBookingData data)
        {
            if (eventData.ContainsKey("Field"))
            {
                var dataObject = data.Value;
                var field      = eventData["Field"] as string;
                switch (field)
                {
                case "FSALIDA_RES1":
                {
                    if (dataObject.DIAS_RES1.HasValue && dataObject.FSALIDA_RES1.HasValue)
                    {
                        dataObject.FPREV_RES1 = dataObject.FSALIDA_RES1.Value.AddDays(dataObject.DIAS_RES1.Value);
                    }
                    else if (dataObject.FSALIDA_RES1.HasValue && dataObject.FPREV_RES1.HasValue)
                    {
                        var arrivalDate = dataObject.FPREV_RES1;
                        var span        = arrivalDate - dataObject.FSALIDA_RES1;
                        dataObject.DIAS_RES1 = (short)span.Value.Days;
                    }
                    break;
                }

                case "FPREV_RES1":
                {
                    var arrivalDate = dataObject.FPREV_RES1;
                    var span        = arrivalDate - dataObject.FSALIDA_RES1;
                    dataObject.DIAS_RES1 = (short)span.Value.Days;
                    break;
                }
                }

                return(true);
            }
            return(false);
        }
Beispiel #21
0
        public async Task <bool> IsChangeTriggered(IDictionary <string, object> eventData, IBookingData data)
        {
            var returnValue = false;

            if (eventData.ContainsKey("Field"))
            {
                var dataObject = data.Value;
                var field      = eventData["Field"] as string;
                data.CompanyDto = await IsOfficeChanged(eventData, data).ConfigureAwait(false);

                returnValue = true;
            }
            WhenDateChanged(eventData, data);
            WhenDaysChanged(eventData, data);
            return(true);
        }
        private bool ParseResult(IBookingData request, SqlMapper.GridReader reader)
        {
            if ((request == null) || (reader == null))
            {
                return(false);
            }
            if (request.Value == null)
            {
                return(false);
            }
            try
            {
                request.AgencyEmployeeDto = SelectionHelpers.WrappedSelectedDto <EAGE, AgencyEmployeeViewObject>(request.Value.EMPLEAGE_RES2, _mapper, reader);

                request.BookingMediaDto = SelectionHelpers.WrappedSelectedDto <MEDIO_RES, BookingMediaViewObject>(request.Value.MEDIO_RES1, _mapper, reader);

                request.BookingTypeDto = SelectionHelpers.WrappedSelectedDto <TIPOS_RESERVAS, BookingTypeViewObject>(request.Value.TIPORES_res1, _mapper, reader);



                request.BookingBudget = SelectionHelpers.WrappedSelectedDto <BudgetSummaryViewObject, BudgetSummaryViewObject>(request.Value.PRESUPUESTO_RES1, _mapper, reader);

                request.BrokerDto = SelectionHelpers.WrappedSelectedDto <CommissionAgentSummaryViewObject, CommissionAgentSummaryViewObject>(request.Value.COMISIO_RES2, _mapper, reader);


                request.CityDto3 = SelectionHelpers.WrappedSelectedDto <POBLACIONES, CityViewObject>(SanitizeCity(request.Value.POCOND_RES2), _mapper, reader);

                request.ContactsDto1 = SelectionHelpers.WrappedSelectedDto <CliContactos, ContactsViewObject>(request.Value.CONTACTO_RES2, _mapper, reader);

                request.CompanyDto = SelectionHelpers.WrappedSelectedDto <SUBLICEN, CompanyViewObject>(request.Value.SUBLICEN_RES1, _mapper, reader);


                request.FareDto = SelectionHelpers.WrappedSelectedDto <NTARI, FareViewObject>(request.Value.TARIFA_RES1, _mapper, reader);

                request.PaymentFormDto = SelectionHelpers.WrappedSelectedDto <FORMAS, PaymentFormViewObject>(request.Value.FCOBRO_RES1, _mapper, reader);

                request.ProvinceDto3 = SelectionHelpers.WrappedSelectedDto <PROVINCIA, ProvinceViewObject>(request.Value.PROVCOND_RES2, _mapper, reader);

                request.PrintingTypeDto = SelectionHelpers.WrappedSelectedDto <CONTRATIPIMPR, PrintingTypeViewObject>(request.Value.CONTRATIPIMPR_RES, _mapper, reader);

                request.OriginDto = SelectionHelpers.WrappedSelectedDto <ORIGEN, OrigenViewObject>(request.Value.ORIGEN_RES2, _mapper, reader);

                request.VehicleActivitiesDto = SelectionHelpers.WrappedSelectedDto <ACTIVEHI, VehicleActivitiesViewObject>(request.Value.ACTIVEHI_RES1, _mapper, reader);

                request.VehicleGroupDto = SelectionHelpers.WrappedSelectedDto <GRUPOS, VehicleGroupViewObject>(request.Value.GRUPO_RES1, _mapper, reader);

                request.VehicleDto = SelectionHelpers.WrappedSelectedDto <VehicleSummaryViewObject, VehicleSummaryViewObject>(request.Value.VCACT_RES1, _mapper, reader);

                request.BookingRefusedDto = SelectionHelpers.WrappedSelectedDto <MOTANU, BookingRefusedViewObject>(request.Value.RECHAZAMOTI, _mapper, reader);


#pragma warning disable CS0168 // Variable is declared but never used
            }
            catch (System.Exception ex)
#pragma warning restore CS0168 // Variable is declared but never used
            {
                var msg = "Parsing multiple query result error " + ex.Message;
                throw new DataAccessLayerException(msg, ex);
            }
            return(true);
        }
        private async Task <IBookingData> BuildAux(IBookingData result)
        {
            var auxQueryStore = QueryStoreFactory.GetQueryStore();
            var dto           = result.Value;

            #region KarveCode Generator for query multiple single values
            // Code Generated that concatains multiple queries to be executed by QueryMultipleAsync.

            auxQueryStore.AddParamCount(QueryType.QueryAgencyEmployee, dto.EMPLEAGE_RES2);
            auxQueryStore.AddParamCount(QueryType.QueryBookingMedia, dto.MEDIO_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryBookingType, dto.TIPORES_res1);
            auxQueryStore.AddParamCount(QueryType.QueryBudgetSummaryById, dto.PRESUPUESTO_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryCommissionAgentSummaryById, dto.COMISIO_RES2);

            /*
             * In some databases we have stored the complete city. And some other just the zip.
             *
             */
            auxQueryStore.AddParamCount(QueryType.QueryCityByName, SanitizeCity(dto.POCOND_RES2));
            auxQueryStore.AddParamCount(QueryType.QueryClientContacts, dto.CONTACTO_RES2);
            auxQueryStore.AddParamCount(QueryType.QueryCompany, dto.SUBLICEN_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryFares, dto.TARIFA_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryPaymentForm, dto.FCOBRO_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryProvince, dto.PROVCOND_RES2);
            auxQueryStore.AddParamCount(QueryType.QueryPrintingType, dto.CONTRATIPIMPR_RES);
            auxQueryStore.AddParamCount(QueryType.QueryOrigin, dto.ORIGEN_RES2);
            auxQueryStore.AddParamCount(QueryType.QueryVehicleActivity, dto.ACTIVEHI_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryVehicleGroup, dto.GRUPO_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryVehicleSummaryById, dto.VCACT_RES1);
            auxQueryStore.AddParamCount(QueryType.QueryRefusedBooking, dto.RECHAZAMOTI);

            #endregion


            #region OfficeQuery

            var officeStore = _queryStoreFactory.GetQueryStore();
            officeStore.AddParamCount(QueryType.QueryOffice, dto.OFICINA_RES1);

            officeStore.AddParamCount(QueryType.QueryOffice, dto.OFISALIDA_RES1);

            officeStore.AddParamCount(QueryType.QueryOffice, dto.OFIRETORNO_RES1);
            #endregion
            #region  ClientQuery
            var clientStore = _queryStoreFactory.GetQueryStore();
            clientStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.CLIENTE_RES1);
            clientStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.CONDUCTOR_RES1);
            clientStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTROCOND_RES2);
            clientStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTRO2COND_RES2);
            clientStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTRO3COND_RES2);
            #endregion
            #region CountryQuery
            var countryStore = _queryStoreFactory.GetQueryStore();
            countryStore.AddParamCount(QueryType.QueryCountry, dto.PAISNIFCOND_RES2);
            countryStore.AddParamCount(QueryType.QueryCountry, dto.PAISCOND_RES2);
            #endregion

            var basicQuery   = auxQueryStore.BuildQuery();
            var countryQuery = countryStore.BuildQuery();
            var clientQuery  = clientStore.BuildQuery();
            var officeQuery  = officeStore.BuildQuery();

            var query = basicQuery + countryQuery;
            try
            {
                using (var connection = SqlExecutor.OpenNewDbConnection())
                {
                    if (connection != null)
                    {
                        var multipleResult = await connection.QueryMultipleAsync(query).ConfigureAwait(false);

                        result.Valid = ParseResult(result, multipleResult);
                        result.Valid = result.Valid && ParseCountryResult(result, multipleResult);
                        var officeResult = await connection.QueryMultipleAsync(officeQuery).ConfigureAwait(false);

                        result.Valid = result.Valid && ParseOfficeResult(result, officeResult);
                        var clientResult = await connection.QueryMultipleAsync(clientQuery).ConfigureAwait(false);

                        result.Valid = result.Valid && ParseClientResult(result, clientResult);
                    }
                }
            } catch (System.Exception ex)
            {
                var msg = "Error building aux for booking type " + dto.NUMERO_RES + "Reason " + ex.Message;
                throw new DataAccessLayerException(msg, ex);
            }
            try
            {
                result.Valid = result.Valid && await ExecuteSecondDriverResult(result).ConfigureAwait(false);
            } catch (System.Exception ex)
            {
                var msg = "Error building aux for booking type" + dto.NUMERO_RES + " ";
                msg += ex.Message;
            }
            return(result);
        }
Beispiel #24
0
        /// <summary>
        /// Check if the office is changed, so the company shall be the same of the office.
        /// </summary>
        /// <param name="eventData">Input data changed from the view </param>
        /// <param name="data">Aggregate to be updated.</param>
        /// <returns>A company object update.</returns>
        public async Task <IEnumerable <CompanyViewObject> > IsOfficeChanged(IDictionary <string, object> eventData, IBookingData data)
        {
            IList <CompanyViewObject> list;

            list = new List <CompanyViewObject>();
            if (!eventData.ContainsKey("Field"))
            {
                return(list);
            }
            var dataObject = data.Value;
            var field      = eventData["Field"] as string;

            if ((field != null) && (field == "OFICINA_RES1"))
            {
                var officeDataService = this.dataService.GetOfficeDataServices();
                var company           = await officeDataService.GetCompanyAsync(dataObject.OFICINA_RES1).ConfigureAwait(false);

                var companyViewObjects = company as CompanyViewObject[] ?? company.ToArray();
                var currentCompany     = companyViewObjects.FirstOrDefault();
                if (currentCompany != null)
                {
                    // ok now we have the company.
                    data.Value.SUBLICEN_RES1 = currentCompany.CODIGO;
                    data.CompanyDto          = companyViewObjects;
                }

                return(companyViewObjects);
            }
            return(list);
        }
Beispiel #25
0
        /// <summary>
        ///  Trigger a reservation quotation for the days.
        /// </summary>
        /// <param name="eventData">Changed data from the user</param>
        /// <param name="data">Domain data to be used.</param>
        /// <returns></returns>

        public async Task <bool> TiggerAReservationQuotation(IDictionary <string, object> eventData, IBookingData data)
        {
            // in this case we just check if the office is changed.
            if (eventData.ContainsKey("Field"))
            {
                var dataObject = data.Value;
                var field      = eventData["Field"] as string;
                switch (field)
                {
                case "TARIFA_RES1":
                case "GRUPO_RES1":
                case "DIAS_RES1":
                {
                    var quotationBooking = await ReservationQuotation(dataObject.TARIFA_RES1, dataObject.GRUPO_RES1,
                                                                      dataObject.DIAS_RES1, dataObject.DIAS_RES1, 0).ConfigureAwait(false);

                    data.Value.Items = quotationBooking;

                    return(true);
                }

                default:
                {
                    return(false);
                }
                }
            }

            return(false);
        }
Beispiel #26
0
 /// <summary>
 /// The can add reservation.
 /// </summary>
 /// <param name="data">
 /// The data.
 /// </param>
 /// <returns>
 /// The <see cref="bool"/>.
 /// </returns>
 public bool CanAddReservation(IBookingData data)
 {
     return(false);
 }
Beispiel #27
0
 public void ComputeBookingTotal(IBookingData data)
 {
 }
        private async Task <IBookingData> BuildAux(IBookingData result)
        {
            var auxQueryStore = QueryStoreFactory.GetQueryStore();
            var dto           = result.Value;

            #region KarveCode Generator for query multiple
            // Code Generated that concatains multiple queries to be executed by QueryMultipleAsync.

            auxQueryStore.AddParamCount(QueryType.QueryOffice, dto.OFICINA_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryOffice, dto.OFISALIDA_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryOffice, dto.OFIRETORNO_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryBudgetSummaryById, dto.PRESUPUESTO_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryFares, dto.TARIFA_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryVehicleGroup, dto.GRUPO_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryCommissionAgentSummaryById, dto.COMISIO_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryVehicleSummaryById, dto.VCACT_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.CLIENTE_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTROCOND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTRO2COND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.OTRO3COND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryClientSummaryExtById, dto.CONDUCTOR_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryCityByName, dto.POCOND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryCountry, dto.PAISNIFCOND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryCountry, dto.PAISCOND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryProvince, dto.PROVCOND_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryOrigin, dto.ORIGEN_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryBookingMedia, dto.MEDIO_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryBookingType, dto.TIPORES_res1);

            auxQueryStore.AddParamCount(QueryType.QueryAgencyEmployee, dto.EMPLEAGE_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryClientContacts, dto.CONTACTO_RES2);

            auxQueryStore.AddParamCount(QueryType.QueryPaymentForm, dto.FCOBRO_RES1);

            auxQueryStore.AddParamCount(QueryType.QueryPrintingType, dto.CONTRATIPIMPR_RES);

            auxQueryStore.AddParamCount(QueryType.QueryVehicleActivity, dto.ACTIVEHI_RES1);

            #endregion
            var query = auxQueryStore.BuildQuery();
            try
            {
                using (var connection = SqlExecutor.OpenNewDbConnection())
                {
                    if (connection != null)
                    {
                        var multipleResult = await connection.QueryMultipleAsync(query).ConfigureAwait(false);

                        result.Valid = ParseResult(result, multipleResult);
                    }
                }
            } catch (System.Exception ex)
            {
                var msg = "Error building aux for booking type " + dto.NUMERO_RES;
                throw new DataAccessLayerException(msg, ex);
            }
            return(result);
        }
        private bool ParseResult(IBookingData request, SqlMapper.GridReader reader)
        {
            if ((request == null) || (reader == null))
            {
                return(false);
            }
            if (request.Value == null)
            {
                return(false);
            }
            try
            {
                request.OfficeDto = SelectionHelpers.WrappedSelectedDto <OFICINA, OfficeDto>(request.Value.OFICINA_RES1, _mapper, reader);

                request.ReservationOfficeDeparture = SelectionHelpers.WrappedSelectedDto <OFICINA, OfficeDto>(request.Value.OFISALIDA_RES1, _mapper, reader);

                request.ReservationOfficeArrival = SelectionHelpers.WrappedSelectedDto <OFICINA, OfficeDto>(request.Value.OFIRETORNO_RES1, _mapper, reader);

                request.BudgetDto = SelectionHelpers.WrappedSelectedDto <PRESUP1, BudgetDto>(request.Value.PRESUPUESTO_RES1, _mapper, reader);

                request.FareDto = SelectionHelpers.WrappedSelectedDto <NTARI, FareDto>(request.Value.TARIFA_RES1, _mapper, reader);

                request.VehicleGroupDto = SelectionHelpers.WrappedSelectedDto <GRUPOS, VehicleGroupDto>(request.Value.GRUPO_RES1, _mapper, reader);

                request.BrokerDto = SelectionHelpers.WrappedSelectedDto <COMISIO, CommissionAgentSummaryDto>(request.Value.COMISIO_RES2, _mapper, reader);

                request.VehicleDto = SelectionHelpers.WrappedSelectedDto <VEHICULOS1, VehicleSummaryDto>(request.Value.VCACT_RES1, _mapper, reader);

                request.DriverDto3 = SelectionHelpers.WrappedSelectedDto <CLIENTES1, ClientSummaryExtended>(request.Value.OTROCOND_RES2, _mapper, reader);

                request.DriverDto4 = SelectionHelpers.WrappedSelectedDto <CLIENTES1, ClientSummaryExtended>(request.Value.OTRO2COND_RES2, _mapper, reader);

                request.DriverDto5 = SelectionHelpers.WrappedSelectedDto <CLIENTES1, ClientSummaryExtended>(request.Value.OTRO3COND_RES2, _mapper, reader);

                request.DriverDto2 = SelectionHelpers.WrappedSelectedDto <CLIENTES1, ClientSummaryExtended>(request.Value.CONDUCTOR_CON1, _mapper, reader);

                request.CityDto3 = SelectionHelpers.WrappedSelectedDto <POBLACIONES, CityDto>(request.Value.POCOND_RES2, _mapper, reader);

                request.Country2Dto = SelectionHelpers.WrappedSelectedDto <PAIS, CountryDto>(request.Value.PAISNIFCOND_RES2, _mapper, reader);

                request.CountryDto3 = SelectionHelpers.WrappedSelectedDto <PAIS, CountryDto>(request.Value.PAISCOND_RES2, _mapper, reader);

                request.ProvinceDto3 = SelectionHelpers.WrappedSelectedDto <PROVINCIA, ProvinciaDto>(request.Value.PROVCOND_RES2, _mapper, reader);

                request.OriginDto = SelectionHelpers.WrappedSelectedDto <ORIGEN, OriginDto>(request.Value.ORIGEN_RES1, _mapper, reader);

                request.BookingMediaDto = SelectionHelpers.WrappedSelectedDto <MEDIO_RES, BookingMediaDto>(request.Value.MEDIO_RES1, _mapper, reader);

                request.BookingTypeDto = SelectionHelpers.WrappedSelectedDto <TIPORES, BookingTypeDto>(request.Value.TIPORES_RES1, _mapper, reader);

                request.AgencyEmployeeDto = SelectionHelpers.WrappedSelectedDto <EAGE, AgencyEmployeeDto>(request.Value.EMPLEAGE_RES2, _mapper, reader);

                request.ContactsDto1 = SelectionHelpers.WrappedSelectedDto <CliContactos, ContactsDto>(request.Value.CONTACTO_RES2, _mapper, reader);

                request.PaymentFormDto = SelectionHelpers.WrappedSelectedDto <FORMAS, PaymentFormDto>(request.Value.FCOBRO_RES1, _mapper, reader);

                request.PrintingTypeDto = SelectionHelpers.WrappedSelectedDto <CONTRATIPIMPR, PrintingTypeDto>(request.Value.CONTRATIPIMPR_RES, _mapper, reader);

                request.VehicleActivitiesDto = SelectionHelpers.WrappedSelectedDto <ACTIVEHI, VehicleActivitiesDto>(request.Value.ACTIVEHI_RES1, _mapper, reader);


#pragma warning disable CS0168 // Variable is declared but never used
            }
            catch (System.Exception ex)
#pragma warning restore CS0168 // Variable is declared but never used
            {
                return(false);
            }
            return(true);
        }