Example #1
0
        public void HandleRequest(IRequest request)
        {
            var assignmentId = request.Data.GetOrDefault <int>(k.ID);

            var info = TransportAssignment.Get(assignmentId);

            var character = request.Session.Character;

            info.ownercharacter.ThrowIfNotEqual(character, ErrorCodes.AccessDenied);

            var volumeWrapperContainer = info.GetContainer();

            //depending on the owner status a different character must be used

            var ownerCharacter = info.taken ? info.volunteercharacter : character;

            volumeWrapperContainer.ReloadItems(ownerCharacter);

            var containerInfo = volumeWrapperContainer.ToDictionary();
            var result        = new Dictionary <string, object>
            {
                { k.container, containerInfo },
                { k.assignment, info.ToDictionary() }
            };

            Message.Builder.FromRequest(request).WithData(result).Send();
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var id        = request.Data.GetOrDefault <int>(k.ID);
                var character = request.Session.Character;
                TransportAssignment.RetrieveTransportAssignment(id, character);

                scope.Complete();
            }
        }
        public Dictionary <string, object> GetAssignmentInfo()
        {
            var result = ToDictionary();

            if (AssignmentId > 0)
            {
                var transportAssignmentInfo = TransportAssignment.Get(AssignmentId);
                result.Add(k.assignment, transportAssignmentInfo.ToPrivateDictionary());
            }

            return(result);
        }
Example #4
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var wrapperEid = request.Data.GetOrDefault <long>(k.eid);
                var character  = request.Session.Character;

                TransportAssignment.ManualDeliverTransportAssignment(character, wrapperEid);

                scope.Complete();
            }
        }
Example #5
0
        public void HandleRequest(IRequest request)
        {
            var character = request.Session.Character;
            var info      = TransportAssignment.GetRunningTransportAssignments(character).ToDictionary(true, character);

            var result = new Dictionary <string, object>
            {
                { k.transportAssignments, info },
                { k.count, TransportAssignment.GetCountInfo(character) }
            };

            Message.Builder.FromRequest(request).WithData(result).Send();
        }
Example #6
0
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var assignmentId = request.Data.GetOrDefault <int>(k.ID);

                var info      = TransportAssignment.Get(assignmentId);
                var character = request.Session.Character;
                info.GiveUpAssignment(character);

                scope.Complete();
            }
        }
        public void HandleRequest(IRequest request)
        {
            var offset = request.Data.GetOrDefault <int>(k.offset);

            var character = request.Session.Character;
            var info      = TransportAssignment.TransportAssignmentHistory(offset, character.Id);

            var result = new Dictionary <string, object>
            {
                { k.history, info }
            };

            Message.Builder.FromRequest(request).WithData(result).Send();
        }
Example #8
0
        public override void Update(TimeSpan time)
        {
            MissionAdministrator.Update(time);

            _transportAssignmentInterval.Update(time);

            if (!_transportAssignmentInterval.Passed)
            {
                return;
            }

            _transportAssignmentInterval.Reset();

            TransportAssignment.CleanUpExpiredAssignmentsAsync();
        }
        public override void OnDeleteFromDb()
        {
            if (IsRepackaged)
            {
                return;
            }

            if (!IsDeleteAllowed())
            {
                base.OnDeleteFromDb();
                IsInAssignment().ThrowIfTrue(ErrorCodes.ContainerInAssignment);
            }

            TransportAssignment.ContainerDestroyed(this);
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var wrapperContainerEid = request.Data.GetOrDefault <long>(k.eid);
                var reward        = request.Data.GetOrDefault <long>(k.reward);
                var collateral    = request.Data.GetOrDefault <long>(k.collateral);
                var sourceBaseEid = request.Data.GetOrDefault <long>(k.sourceBase);
                var targetBaseEid = request.Data.GetOrDefault <long>(k.targetBase);
                var durationDays  = request.Data.GetOrDefault <int>(k.duration);

                var character = request.Session.Character;
                TransportAssignment.SubmitTransportAssignment(character, wrapperContainerEid, reward, collateral, sourceBaseEid, targetBaseEid, durationDays);

                scope.Complete();
            }
        }
Example #11
0
        /// <summary>
        /// Make the docking happen
        /// </summary>
        /// <param name="zone"></param>
        /// <param name="dockingBase"></param>
        public void DockToBase(IZone zone, DockingBase dockingBase)
        {
            States.Dock = true;

            var publicContainer = dockingBase.GetPublicContainer();

            FullArmorRepair();

            publicContainer.AddItem(this, false);
            publicContainer.Save();
            dockingBase.DockIn(Character, NormalUndockDelay, ZoneExitType.Docked);

            Transaction.Current.OnCommited(() =>
            {
                RemoveFromZone();
                MissionHelper.MissionAdvanceDockInTarget(Character.Id, zone.Id, CurrentPosition);
                TransportAssignment.DeliverTransportAssignmentAsync(Character);
            });
        }
Example #12
0
        /// <summary>
        /// A volunteer takes a transport assignment
        /// </summary>
        private static void TakeTransportAssignment(int id, Character character)
        {
            var transportAssignmentInfo = TransportAssignment.Get(id);

            transportAssignmentInfo.ownercharacter.ThrowIfEqual(character, ErrorCodes.WTFErrorMedicalAttentionSuggested);
            transportAssignmentInfo.taken.ThrowIfTrue(ErrorCodes.TransportAssignmentIsTaken);
            transportAssignmentInfo.volunteercharacter.ThrowIfNotEqual(null, ErrorCodes.TransportAssignmentIsTaken);

            transportAssignmentInfo.TakeCollateral(character);
            transportAssignmentInfo.expiry.ThrowIfLess(DateTime.Now, ErrorCodes.TransportAssignmentExpired);
            transportAssignmentInfo.volunteercharacter = character;
            transportAssignmentInfo.taken   = true;
            transportAssignmentInfo.started = DateTime.Now;
            transportAssignmentInfo.UpdateToDb();

            VolumeWrapperContainer volumeWrapperContainer;
            PublicContainer        publicContainer;

            transportAssignmentInfo.GiveToVolunteer(out volumeWrapperContainer, out publicContainer);

            transportAssignmentInfo.WriteLog(TransportAssignmentEvent.take, publicContainer.Parent);

            var extraInfo = new Dictionary <string, object>
            {
                { k.assignment, transportAssignmentInfo.ToDictionary() }
            };

            var assignmentInfo = new Dictionary <string, object>
            {
                { k.assignment, transportAssignmentInfo.ToPrivateDictionary() }
            };

            //send info to volunteer
            TransportAssignment.SendCommandWithTransportAssignmentsAndContainer(Commands.TransportAssignmentTake, publicContainer, character, assignmentInfo);

            //send info to principal
            Message.Builder.SetCommand(Commands.TransportAssignmentAccepted).WithData(extraInfo).ToCharacter(transportAssignmentInfo.ownercharacter).Send();
        }