/// <summary>
        ///  Retrieve and build the auxiliar tables.
        /// </summary>
        /// <param name="result">Booking Inicident data to be used</param>
        /// <returns></returns>
        public async Task <IBookingIncidentData> BuildAux(IBookingIncidentData 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);

            auxQueryStore.AddParamCount(QueryType.QuerySupplierSummary, dto.PROVEE);

            auxQueryStore.AddParamCount(QueryType.QueryVehicleSummary, dto.NOM_VEHI);

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

            auxQueryStore.AddParamCount(QueryType.QueryBookingIncidentType, dto.TIPO);

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

                    result.Valid = ParseResult(result, multipleResult);
                }
            }
            return(result);
        }
        private bool ParseResult(IBookingIncidentData request, SqlMapper.GridReader reader)
        {
            if ((request == null) || (reader == null))
            {
                return(false);
            }
            if (request.Value == null)
            {
                return(false);
            }
            try
            {
                request.IncidentOfficeDto = SelectionHelpers.WrappedSelectedDto <OFICINAS, OfficeViewObject>(request.Value.OFICINA, _mapper, reader);

                request.IncidentSupplierDto = SelectionHelpers.WrappedSelectedDto <PROVEE1, SupplierSummaryViewObject>(request.Value.PROVEE, _mapper, reader);

                request.IncidentVehicleDto = SelectionHelpers.WrappedSelectedDto <VehicleSummaryViewObject, VehicleSummaryViewObject>(request.Value.NOM_VEHI, _mapper, reader);

                request.IncidentClientDto = SelectionHelpers.WrappedSelectedDto <ClientSummaryExtended, ClientSummaryExtended>(request.Value.CLIENTE, _mapper, reader);

                request.IncidentTypeDto = SelectionHelpers.WrappedSelectedDto <COINRE, IncidentTypeViewObject>(request.Value.TIPO, _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);
        }
        /// <summary>
        /// Save an asynchronous domain incident.
        /// </summary>
        /// <param name="domainObject"></param>
        /// <returns></returns>
        public async Task <bool> SaveAsync(IBookingIncidentData domainObject)
        {
            if (!domainObject.Valid)
            {
                return(false);
            }
            var savedReservation = await _dataSaver.SaveAsync(domainObject.Value).ConfigureAwait(false);

            return(savedReservation);
        }
        /// <summary>
        ///  Delete a booking incident data
        /// </summary>
        /// <param name="domainObject">Domain object to be valid</param>
        /// <returns></returns>
        public async Task <bool> DeleteAsync(IBookingIncidentData domainObject)
        {
            if (!domainObject.Valid)
            {
                return(false);
            }
            var dto    = domainObject.Value;
            var result = await _dataDeleter.DeleteAsync(dto).ConfigureAwait(false);

            return(result);
        }
        /// <summary>
        ///  Called at initializing the form.
        /// </summary>
        /// <param name="value">Value of the PrimaryKeyValue</param>
        /// <param name="payload">Value of the Payload</param>
        /// <param name="insertion">True if it is inserted or false otherwise</param>
        protected void Init(string value, DataPayLoad payload, bool insertion)
        {
            if (payload == null)
            {
                throw new ArgumentNullException("Invalid Payload");
            }
            if (payload.DataObject == null)
            {
                return;
            }
            if (!(payload.DataObject is IBookingIncidentData))
            {
                return;
            }
            _dtoWrapperData = payload.DataObject as IBookingIncidentData;
            DataObject      = _dtoWrapperData.Value;


            RegisterToolBar();
            ActiveSubSystem();
        }