/// <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())); }
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); }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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); }
/// <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); }
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); }