Ejemplo n.º 1
0
        private DataTable ToSingleTVP(SectionTraffic value)
        {
            var table = new DataTable();

            table.SetTypeName("[Logistic].[UDTT_SectionTraffic]");

            var sectionId = new DataColumn("[SectionId]", typeof(string));

            table.Columns.Add(sectionId);

            var dataVersionId = new DataColumn("[DataVersionId]", typeof(int));

            table.Columns.Add(dataVersionId);

            var blDate = new DataColumn("[BlDate]", typeof(DateTime));

            table.Columns.Add(blDate);

            var bLRef = new DataColumn("[BLReference]", typeof(string));

            table.Columns.Add(bLRef);

            var vessel = new DataColumn("[VesselCode]", typeof(string));

            table.Columns.Add(vessel);

            var contextInformation = new DataColumn("[ContextInformation]", typeof(string));

            table.Columns.Add(contextInformation);

            var portOrigin = new DataColumn("[PortOriginCode]", typeof(string));

            table.Columns.Add(portOrigin);

            var portDestination = new DataColumn("[PortDestinationCode]", typeof(string));

            table.Columns.Add(portDestination);

            var shippingStatusCode = new DataColumn("[ShippingStatusCode]", typeof(string));

            table.Columns.Add(shippingStatusCode);

            if (value != null)
            {
                var row = table.NewRow();
                row[sectionId]          = value.SectionId;
                row[dataVersionId]      = 0;
                row[contextInformation] = null;
                row[blDate]             = value.BLDate.HasValue ? value.BLDate : (object)DBNull.Value;
                row[bLRef]              = value.BLReference;
                row[vessel]             = value.VesselCode;
                row[portOrigin]         = null;
                row[portDestination]    = null;
                row[shippingStatusCode] = value.ShippingStatusCode;
                table.Rows.Add(row);
            }

            return(table);
        }
Ejemplo n.º 2
0
        public async Task UpdateSectionTrafficDetailsAsync(SectionTraffic sectionTraffic, string company, long?dataVersionId)
        {
            var queryParameters = new DynamicParameters();

            queryParameters.Add("@SectionTrafficList", ToSingleTVP(sectionTraffic));
            queryParameters.Add("@CompanyId", company);
            queryParameters.Add("@TrafficUpdate", true);
            queryParameters.Add(DataVersionIdParameter, dataVersionId);

            await ExecuteNonQueryAsync(StoredProcedureNames.UpdateSectionTraffic, queryParameters, true);
        }
Ejemplo n.º 3
0
        public async Task <Unit> Handle(ReassignSectionsForCharterCommand request, CancellationToken cancellationToken)
        {
            _unitOfWork.BeginTransaction();

            try
            {
                var sectionsIds = request.SectionsAssigned.Select(section => long.Parse(section.SectionId, CultureInfo.InvariantCulture)).ToList();
                await _charterRepository.RemoveSectionsFromCharterAsync(request.CharterId, sectionsIds, request.Company);

                await _charterRepository.AssignSectionsToCharterAsync(request.NewCharterId, sectionsIds, request.Company);

                List <SectionTraffic> sectionTrafficList = new List <SectionTraffic>();

                foreach (var section in request.SectionsAssigned)
                {
                    SectionTraffic sectionTraffic = new SectionTraffic();
                    sectionTraffic.SectionId  = long.Parse(section.SectionId, CultureInfo.InvariantCulture);
                    sectionTraffic.VesselCode = request.NewCharterVesselCode;
                    if (section.RemoveSectionTrafficInfo != null && section.RemoveSectionTrafficInfo == true)
                    {
                        sectionTraffic.BLDate      = (DateTime?)null;
                        sectionTraffic.BLReference = null;
                    }
                    else
                    {
                        sectionTraffic.BLDate      = section.BlDate;
                        sectionTraffic.BLReference = section.BLRef;
                    }

                    sectionTrafficList.Add(sectionTraffic);
                }

                if (sectionsIds.Any())
                {
                    await _charterRepository.UpdateVesselInformationAsync(sectionTrafficList, request.Company);
                }

                _unitOfWork.Commit();

                _logger.LogInformation("Section re-assigned from charter with id {Atlas.CharterId} to {Atlas.newCharterId} ", request.CharterId, request.NewCharterId);

                return(Unit.Value);
            }
            catch
            {
                _unitOfWork.Commit();
                _unitOfWork.Rollback();
                throw;
            }
        }