Beispiel #1
0
        public async Task <Order[]> GetFrom(FreelanceBurse burse)
        {
            await Task.CompletedTask;
            XDocument xml = XDocument.Load(burse.Link.ToString());

            OrderBody[] bodies = _parser.GetFrom(xml);

            return(bodies.Select(p => new Order(p, burse)).ToArray());
        }
Beispiel #2
0
        public async Task <Order[]> GetUnhandledOrdersAsync()
        {
            using (IDbConnection connection = _connectionFactory.BuildConnection())
            {
                string query = $@"
                    with cte as (
                        update ""Orders""
                        set 
                            ""Status"" = '{ProcessingStatus.InProcess}', 
                            ""LastModificationDate"" = now()
                        where 
                            ""Status"" = '{ProcessingStatus.New}' 
                            or (""Status"" = '{ProcessingStatus.InProcess}' and date_part('minutes', now() - ""LastModificationDate""::timestamp) > 5)
                        returning ""Title"", ""Description"", ""Link"", ""Publication"", ""FreelanceBurseId""
                    )
                    select *
                    from cte
                    join ""FreelanceBurses"" fb on cte.""FreelanceBurseId"" = fb.""Id""
                ";

                IEnumerable <OrderEntity> result = await connection.QueryAsync <OrderEntity, FreelanceBurseEntity, OrderEntity>(
                    query,
                    (o, fb) =>
                {
                    o.FreelanceBurse = fb;

                    return(o);
                });

                return(result.Select(
                           p =>
                {
                    var body = new OrderBody(p.Title, p.Description, new Uri(p.Link), p.Publication);
                    var burse = new FreelanceBurse(p.FreelanceBurseId, new Uri(p.FreelanceBurse.Link), p.FreelanceBurse.Name);

                    return new Order(body, burse);
                })
                       .ToArray());
            }
        }
Beispiel #3
0
 public Order(OrderBody body, FreelanceBurse source)
 {
     Source = source;
     Body   = body;
 }