Пример #1
0
        public async Task CanCancelETransfer()
        {
            var fileId       = TestData.EvacuationFileId;
            var registrantId = TestData.ContactId;
            var uniqueId     = TestHelper.GenerateNewUniqueId(TestData.TestPrefix);
            var email        = $"{uniqueId}[email protected]";

            var support = new IncidentalsSupport
            {
                TotalAmount     = 100,
                SupportDelivery = new Interac
                {
                    NotificationEmail     = email,
                    ReceivingRegistrantId = registrantId,
                }
            };

            support.From     = DateTime.UtcNow;
            support.To       = DateTime.UtcNow.AddDays(3);
            support.IssuedBy = new TeamMember {
                DisplayName = "autotest R"
            };
            support.IncludedHouseholdMembers = TestData.HouseholdMemberIds.TakeRandom();

            await manager.Handle(new ProcessSupportsCommand { FileId = fileId, Supports = new[] { support }, RequestingUserId = TestData.Tier4TeamMemberId });

            var supportId = (await manager.Handle(new SearchSupportsQuery {
                FileId = fileId
            })).Items
                            .Where(s => s.SupportDelivery is Interac i && i.NotificationEmail != null && i.NotificationEmail.StartsWith(uniqueId)).ShouldHaveSingleItem().Id;

            await manager.Handle(new CancelSupportCommand
            {
                FileId    = fileId,
                SupportId = supportId,
                Reason    = "need to cancel"
            });

            var updatedSupport = (await manager.Handle(new SearchSupportsQuery {
                FileId = fileId
            })).Items.Single(s => s.Id == supportId);

            updatedSupport.Status.ShouldBe(SupportStatus.Cancelled);
        }
        public async Task <IEnumerable <SupportFlag> > CheckCompliance(Support support)
        {
            await Task.CompletedTask;
            var approverName = support switch
            {
                ClothingSupport s => s.ApproverName,
                IncidentalsSupport s => s.ApproverName,
                FoodGroceriesSupport s => s.ApproverName,

                _ => null
            };

            if (!string.IsNullOrEmpty(approverName))
            {
                return new[] { new AmountExceededSupportFlag {
                                   Approver = approverName
                               } }
            }
            ;
            return(Array.Empty <SupportFlag>());
        }
    }
}
Пример #3
0
        public static IEnumerable <Support> CreateSupports(string prefix, EvacuationFile file)
        {
            var householdMemberIds = file.HouseholdMembers.Select(m => m.Id).ToArray();
            var from     = DateTime.UtcNow.AddDays(-1);
            var to       = DateTime.UtcNow.AddDays(2);
            var supports = new Support[]
            {
                new ClothingSupport {
                    TotalAmount = RandomAmount()
                },
                new IncidentalsSupport {
                    TotalAmount = RandomAmount()
                },
                new FoodGroceriesSupport {
                    TotalAmount = RandomAmount()
                },
                new FoodRestaurantSupport {
                    TotalAmount = RandomAmount()
                },
                new LodgingBilletingSupport()
                {
                    NumberOfNights = RandomInt()
                },
                new LodgingGroupSupport {
                    NumberOfNights = RandomInt(), FacilityCommunityCode = file.EvacuatedFromAddress.Community
                },
                new LodgingHotelSupport {
                    NumberOfNights = RandomInt(), NumberOfRooms = RandomInt()
                },
                new TransportationOtherSupport {
                    TotalAmount = RandomAmount()
                },
                new TransportationTaxiSupport {
                    FromAddress = "test", ToAddress = "test"
                },
            };

            Func <Support, SupportDelivery> createSupportDelivery = sup =>
                                                                    sup switch
            {
                IncidentalsSupport s => new Interac {
                    NotificationEmail = $"{prefix}[email protected]", ReceivingRegistrantId = file.PrimaryRegistrantId
                },
                ClothingSupport s => new Interac {
                    NotificationEmail = $"{prefix}[email protected]", ReceivingRegistrantId = file.PrimaryRegistrantId
                },

                _ => new Referral {
                    IssuedToPersonName = $"{prefix}-unitest"
                },
            };

            foreach (var support in supports)
            {
                support.FileId = file.Id;
                support.IncludedHouseholdMembers = householdMemberIds.TakeRandom();
                support.From            = from;
                support.To              = to;
                support.SupportDelivery = createSupportDelivery(support);
            }

            return(supports);
        }