Example #1
0
        public async Task <Result> Handle(CreatePlatoOrderCommand request, CancellationToken cancellationToken)
        {
            Result result;

            try
            {
                var platoOrderId = _identifierProvider.Generate();
                await _platoOrderWriteRepository.CreateAsync(new PlatoOrder(platoOrderId, request.PlatoOrder));


                var platoOrderOverview = _platoOrderProvider.GetPlatoOrderOverview(request.PlatoOrder);

                //_platoOrderChecker.Check(platoOrderOverview);

                var order = _domainConverter.ToOrder(platoOrderOverview);

                Operational operational = new Operational(Status.Open);

                var workOrder = new WorkOrder.Builder()
                                .WithId(Guid.NewGuid())
                                .WithIsEditable(false)
                                .WithCreatedOn(new CreatedOn(DateTime.UtcNow))
                                .WithUserCreated("Plato")
                                .WithOrder(order)
                                .WithOperational(operational)
                                .Build();

                workOrder.Version = _versionProvider.Generate();
                await _workOrderWriteRepository.CreateAsync(workOrder);

                result = Result.Ok(workOrder.Id, workOrder.Version);
            }
            catch (PlatoOrderOverviewCheckException ex)
            {
                _logAs.Error(CustomFailures.CreatePlatoOrderFailure, ex);
                result = Result.Fail(CustomFailures.CreatePlatoOrderFailure);
            }
            catch (Exception ex)
            {
                _logAs.Error(CustomFailures.CreatePlatoOrderFailure, ex);
                result = Result.Fail(CustomFailures.CreatePlatoOrderFailure);
            }
            return(result);
        }
Example #2
0
        public async Task <Result> Handle(CreateWorkOrderCommand request, CancellationToken cancellationToken)
        {
            //var order = new Order.Builder()
            //                     .WithSite(request.Order.Site)
            //                     .WithCustomer(request.Order.Customer)
            //                     .WithOperationalDepartment(request.Order.OperationalDepartment)
            //                     .WithLicensePlateTrailer(request.Order.LicensePlateTrailer)
            //                     .WithLicensePlateTruck(request.Order.LicensePlateTruck)
            //                     .WithContainer(request.Order.Container)
            //                     .WithContainerLocation(request.Order.ContainerLocation)
            //                     .WithDockingZone(request.Order.DockingZone)
            //                     .Build();


            Result result;

            try
            {
                var order = new Order()
                {
                    Origin = new Origin()
                    {
                        Source = "ECC"
                    },
                    Number = null,

                    Customer = new Customer()
                    {
                        Code           = null,
                        ProductionSite = null,
                        Reference1     = null,
                        Reference2     = null,
                        Reference3     = null,
                        Reference4     = null,
                        Reference5     = null
                    },
                    Customs = new Customs()
                    {
                        CertificateOfOrigin = null,
                        Document            = new Document()
                        {
                            Name   = null,
                            Number = null,
                            Office = null,
                            Date   = null
                        }
                    },
                    Transport = new Transport()
                    {
                        Kind   = null,
                        Type   = null,
                        Driver = new Driver()
                        {
                            Name = null,
                            Wait = Wait.Undefined
                        },
                        Delivery = new Delivery()
                        {
                            Place = null
                        },
                        Loading = new Loading()
                        {
                            Place     = null,
                            Reference = null,
                        },
                        Truck = new Truck()
                        {
                            LicensePlateTruck   = null,
                            LicensePlateTrailer = null,
                        },
                        Container = new Container()
                        {
                            Number        = null,
                            Location      = null,
                            StackLocation = null
                        },
                        Railcar = new Railcar()
                        {
                            Number = null
                        },
                        Ard = new Ard()
                        {
                            Reference1  = null,
                            Reference2  = null,
                            Reference3  = null,
                            Reference4  = null,
                            Reference5  = null,
                            Reference6  = null,
                            Reference7  = null,
                            Reference8  = null,
                            Reference9  = null,
                            Reference10 = null
                        },
                        Arrival = new Arrival()
                        {
                            Expected = null,
                            Arrived  = null,
                            Latest   = null
                        },
                        BillOfLading = new BillOfLading()
                        {
                            Number      = null,
                            WeightNet   = null,
                            WeightGross = null
                        },
                        Carrier = new Carrier()
                        {
                            Arrived = null,
                            Booked  = null
                        },
                        Weighbridge = new Weighbridge()
                        {
                            Net   = null,
                            Gross = null
                        },
                        Seal = new Seal()
                        {
                            Seal1 = null,
                            Seal2 = null,
                            Seal3 = null
                        },
                        Adr = null
                    },
                    Operation = new Operation()
                    {
                        Dispatch = new Dispatch()
                        {
                            Priority = null,
                            To       = null,
                            Comment  = null
                        },

                        Type                  = OperationType.Inbound,
                        Name                  = request.Operation,
                        UnitPlanning          = null,
                        TypePlanning          = null,
                        Site                  = request.Site,
                        Zone                  = null,
                        OperationalDepartment = request.Department,
                        DockingZone           = null,
                        LoadingDock           = null,
                        ProductOverview       = null,
                        LotbatchOverview      = null
                    }
                };
                var operational = new Operational(Status.Open);

                var workOrder = new WorkOrder.Builder()
                                .WithId(_identifierProvider.Generate())
                                .WithIsEditable(true)
                                .WithCreatedOn(new CreatedOn(DateTime.UtcNow))
                                .WithUserCreated(request.UserCreated)
                                .WithOrder(order)
                                .WithOperational(operational)
                                .Build();


                workOrder.Version = _versionProvider.Generate();

                await _workOrderWriteRepository.CreateAsync(workOrder);

                result = Result.Ok(workOrder.Id, workOrder.Version);
            }
            catch (UniqueKeyDbException)
            {
                result = Result.Fail(new System.Collections.Generic.List <Failure>()
                {
                    new HandlerFault()
                    {
                        Code    = HandlerFaultCode.Conflict.Name,
                        Message = HandlerFailures.Conflict,
                        Target  = "workOrder"
                    }
                });
            }
            catch (Exception ex)
            {
                _logAs.Error(CustomFailures.CreateWorkOrderFailure, ex);
                result = Result.Fail(CustomFailures.CreateWorkOrderFailure);
            }
            return(result);
        }