Example #1
0
        public WeekType(IWeekService weekService, IWeekUserLinkService weekUserLinkService, IUserService userService)
        {
            FieldAsync <DecimalGraphType>("costPerUser", "The amount owed per user", resolve: async context => await weekService.GetAmountToPayPerPersonAsync(context.Source.WeekId));

            FieldAsync <ListGraphType <WeekUserLinkType> >("users", resolve: async context => await weekUserLinkService.GetByWeekIdAsync(context.Source.WeekId));
            FieldAsync <UserType>("shopper", resolve: async context => context.Source.ShopperUserId.HasValue ? await userService.GetByIdAsync(context.Source.ShopperUserId.Value) : null);
        }
Example #2
0
        public UserType(IWeekService weekService,
                        IWeekUserLinkService weekUserLinkService,
                        IPaymentService paymentService)
        {
            FieldAsync <DecimalGraphType>("totalCost", "The sum of all week costs for weeks the user is signed up to", resolve: async context => await weekService.GetTotalCostsForUserAsync(context.Source.UserId));
            FieldAsync <DecimalGraphType>("totalPaid", "The sum of amounts paid for all weeks", resolve: async context => await paymentService.GetTotalPaidForUser(context.Source.UserId));

            FieldAsync <DecimalGraphType>("totalOwed", "The total amount owed by the user", resolve: async context => await paymentService.GetTotalOwedForUser(context.Source.UserId));

            FieldAsync <ListGraphType <PaymentType> >("payments", "The users payments",
                                                      resolve: async context => await paymentService.GetByUserIdAsync(context.Source.UserId));

            FieldAsync <ListGraphType <WeekUserLinkType> >("weeks", "The users joined weeks",
                                                           arguments: new QueryArguments(
                                                               new QueryArgument <BooleanGraphType> {
                Name = "unpaidOnly", Description = "Include only unpaid weeks"
            }
                                                               ),
                                                           resolve: async context =>
            {
                var unpaidOnly = context.GetArgument <bool?>("unpaidOnly");
                if (unpaidOnly.HasValue && unpaidOnly.Value)
                {
                    return(await weekUserLinkService.GetByUserIdAsync(context.Source.UserId, true));
                }
                return(await weekUserLinkService.GetByUserIdAsync(context.Source.UserId));
            });
        }
Example #3
0
        public WeekUserLinkType(IWeekService weekService, IUserService userService)
        {
            FieldAsync <UserType>("user", "The user for the link", resolve: async context => await userService.GetByIdAsync(context.Source.UserId));
            FieldAsync <WeekType>("week", "The week for the link", resolve: async context => await weekService.GetByIdAsync(context.Source.WeekId));

            IsTypeOf = value => value is WeekUserLink;
        }
 public DeliveryRequestHandler(IWeekService weekService,
                               IGreenDeliveryDateService greenDeliveryDateService,
                               IMapper mapper,
                               ILogger <DeliveryRequestHandler> logger)
 {
     _weekService = weekService ?? throw new ArgumentNullException(nameof(weekService));
     _greenDeliveryDateService = greenDeliveryDateService ?? throw new ArgumentNullException(nameof(greenDeliveryDateService));
     _mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
 public WeeksViewModel(IWeekService weekService, IHourCodeProvider hourCodeProvider)
 {
     _weekService      = weekService;
     _hourCodeProvider = hourCodeProvider;
     AddWeekCommand    = new DelegateCommand(AddWeek);
     RemoveWeekCommand = new DelegateCommand(RemoveWeek);
     Weeks             = new ObservableCollection <WeekViewModel>();
     foreach (var week in _weekService.GetRecentWeeks())
     {
         Weeks.Add(new WeekViewModel(_weekService, _hourCodeProvider, week));
     }
     CurrentWeek = Weeks.FirstOrDefault();
 }
 public WeeksViewModel(IWeekService weekService, IHourCodeProvider hourCodeProvider)
 {
     _weekService = weekService;
     _hourCodeProvider = hourCodeProvider;
     AddWeekCommand = new DelegateCommand(AddWeek);
     RemoveWeekCommand = new DelegateCommand(RemoveWeek);
     Weeks = new ObservableCollection<WeekViewModel>();
     foreach(var week in _weekService.GetRecentWeeks())
     {
         Weeks.Add(new WeekViewModel(_weekService, _hourCodeProvider, week));
     }
     CurrentWeek = Weeks.FirstOrDefault();
 }
Example #7
0
        public WeekViewModel(IWeekService weekService, IHourCodeProvider hourCodeProvider, Week week)
        {
            _weekService = weekService;
            Week = week;
            _hourCodeProvider = hourCodeProvider;

            Usages = new ObservableCollection<HourUsageViewModel>();
            foreach (var hourUsage in Week.Usages)
            {
                Usages.Add(new HourUsageViewModel(_hourCodeProvider, this, hourUsage));
            }
            SaveWeekCommand = new DelegateCommand(SaveWeek);
            AddUsageCommand = new DelegateCommand(AddUsage);
        }
Example #8
0
        public WeekViewModel(IWeekService weekService, IHourCodeProvider hourCodeProvider, Week week)
        {
            _weekService      = weekService;
            Week              = week;
            _hourCodeProvider = hourCodeProvider;

            Usages = new ObservableCollection <HourUsageViewModel>();
            foreach (var hourUsage in Week.Usages)
            {
                Usages.Add(new HourUsageViewModel(_hourCodeProvider, this, hourUsage));
            }
            SaveWeekCommand = new DelegateCommand(SaveWeek);
            AddUsageCommand = new DelegateCommand(AddUsage);
        }
Example #9
0
        public SandwichClubQuery(IScSession session, IUserService userService, IWeekService weekService, IWeekUserLinkService weekUserLinkService)
        {
            Name = "Query";

            Field <StringGraphType>(
                "version",
                resolve: context => typeof(SandwichClubQuery).Assembly.GetName().Version.ToString());

            FieldAsync <UserType>(
                "me",
                resolve: async context =>
            {
                return(await userService.GetByIdAsync((session.CurrentUser?.UserId).Value));
            }
                );


            FieldAsync <UserType>(
                "primaryShopper",
                resolve: async context =>
            {
                return(await userService.GetPrimaryShopperAsync());
            }
                );

            FieldAsync <ListGraphType <UserType> >(
                "users",
                resolve: async context => await userService.GetAsync()
                );

            FieldAsync <UserType>(
                "user",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "userId", Description = "UserId of the user"
            },
                    new QueryArgument <StringGraphType> {
                Name = "facebookId", Description = "FacebookId of the user"
            }
                    ),
                resolve: async context =>
            {
                var userId = context.GetArgument <int?>("userId");
                if (userId != null)
                {
                    return(await userService.GetByIdAsync(userId.Value));
                }
                var socialId = context.GetArgument <string>("facebookId");
                if (socialId != null)
                {
                    return(await userService.GetBySocialId(socialId));
                }
                return(null);
            }
                );

            FieldAsync <WeekType>(
                "thisweek",
                resolve: async context => await weekService.GetCurrentWeekAsync()
                );

            FieldAsync <ListGraphType <WeekType> >(
                "weeks",
                resolve: async context => await weekService.GetAsync()
                );

            FieldAsync <WeekType>(
                "week",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "weekId", Description = "WeekId of the user"
            }
                    ),
                resolve: async context =>
            {
                var weekId = context.GetArgument <int?>("weekId");
                if (weekId != null)
                {
                    return(await weekService.GetByIdAsync(weekId.Value));
                }
                return(null);
            }
                );

            FieldAsync <WeekUserLinkType>(
                "weekLink",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "weekId", Description = "WeekId of the user"
            }
                    ),
                resolve: async context =>
            {
                var weekId = context.GetArgument <int>("weekId");
                return(await weekUserLinkService.GetByIdAsync(new WeekUserLinkId {
                    WeekId = weekId, UserId = (session.CurrentUser?.UserId).Value
                }));
            }
                );
        }
Example #10
0
 public WeekController(ILogger <WeekController> logger, IWeekService weekService)
 {
     _logger      = logger;
     _weekService = weekService;
 }
Example #11
0
        public SandwichClubMutation(IScSession session,
                                    IUserService userService,
                                    IPaymentService paymentService,
                                    IWeekService weekService)
        {
            Name = "Mutation";
            FieldAsync <WeekType>(
                "subscribeToWeek",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "userId", Description = "UserId of the user"
            },
                    new QueryArgument <IntGraphType> {
                Name = "weekId", Description = "WeekId of the week"
            },
                    new QueryArgument <IntGraphType> {
                Name = "slices", Description = "WeekId of the week"
            }
                    ),
                resolve: async context =>
            {
                var userId = context.GetArgument <int>("userId");
                var weekId = context.GetArgument <int>("weekId");
                var slices = context.GetArgument <int>("slices");

                return(await weekService.SubscibeToWeek(weekId, userId, slices));
            }
                );

            FieldAsync <PaymentType>(
                "markAllWeeksPaidForUser",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "userId", Description = "UserId to mark weeks paid for"
            }
                    ),
                resolve: async context =>
            {
                var userId = context.GetArgument <int>("userId");

                return(await paymentService.PayOwedForUser(userId));
            }
                );

            FieldAsync <WeekType>(
                "updateWeek",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "weekId", Description = "WeekId of the week"
            },
                    new QueryArgument <IntGraphType> {
                Name = "shopperId", Description = "UserId of the shopper"
            },
                    new QueryArgument <FloatGraphType> {
                Name = "cost", Description = "cost of the week"
            }
                    ),
                resolve: async context =>
            {
                var shopperId = context.GetArgument <int?>("shopperId");
                var weekId    = context.GetArgument <int>("weekId");
                var cost      = context.GetArgument <double?>("cost");

                return(await weekService.SaveAsync(new Week
                {
                    WeekId = weekId,
                    ShopperUserId = shopperId,
                    Cost = cost ?? 0,
                }));
            }
                );

            Field <UserType>(
                "updateMe",
                arguments: new QueryArguments(
                    new QueryArgument <StringGraphType> {
                Name = "bankName", Description = "The name of the users week bank"
            },
                    new QueryArgument <StringGraphType> {
                Name = "bankDetails", Description = "Details for making payments"
            },
                    new QueryArgument <BooleanGraphType> {
                Name = "shopper", Description = "Set as shopper"
            }
                    ),
                resolve: (context) =>
            {
                var user = session.CurrentUser;

                var bankName    = context.GetArgument <string>("bankName");
                var bankDetails = context.GetArgument <string>("bankDetails");
                var shopper     = context.GetArgument <bool?>("shopper");

                if (bankName != null)
                {
                    user.BankName = bankName;
                }
                if (bankDetails != null)
                {
                    user.BankDetails = bankDetails;
                }
                if (shopper != null)
                {
                    user.Shopper = shopper.Value;
                }

                return(userService.SaveAsync(user));
            }
                );
        }
Example #12
0
 public WorkingDaysTask(IWeekService weekService)
 {
     _weekService = weekService;
 }
Example #13
0
 public PaymentService(IPaymentRepository repo, ILogger <BaseService <int, Payment, IPaymentRepository> > logger,
                       IWeekService weekService)
     : base(repo, logger)
 {
     _weekService = weekService;
 }
Example #14
0
 public WeekController(IWeekService weekService)
 {
     this.weekService = weekService;
 }
 public WeeksController(IWeekService weekService)
 {
     _weekService = weekService;
 }