public async Task <IActionResult> Outgoing()
        {
            var userId = await _accountManager.GetUserIdByNameAsync(User.Identity.Name);

            var outgoingOrders = await _orderManager.GetOutgoingOrdersAsync(userId);

            var orderViewModels = new List <OrderViewModel>();

            if (outgoingOrders.Any())
            {
                foreach (var order in outgoingOrders)
                {
                    var tags = await _tagManager.GetOrderTagsAsync(order.Id);

                    var tagViewModels = new List <TagViewModel>();

                    if (tags.Any())
                    {
                        foreach (var tag in tags)
                        {
                            tagViewModels.Add(new TagViewModel()
                            {
                                Id   = tag.Id,
                                Name = tag.Name
                            });
                        }
                    }
                    var vendor = order.VendorId is null ? null : (await _profileManager.GetProfileAsync(order.VendorId));
                    orderViewModels.Add(new OrderViewModel()
                    {
                        Id             = order.Id,
                        Price          = order.Price,
                        Description    = order.Description,
                        Title          = order.Title,
                        Start          = order.Start,
                        End            = order.End,
                        State          = order.State,
                        ClientId       = order.ClientId,
                        VendorId       = order.VendorId,
                        VendorName     = vendor is null ? null : vendor.Name,
                        VendorUserName = order.VendorId is null ? null : await _accountManager.GetUserNameByIdAsync(order.VendorId),
                        VendorAvatar   = vendor is null ? null : vendor.Avatar,
                        Comment        = order.Comment == null ? null : new CommentViewModel()
                        {
                            OrderId = order.Id,
                            Created = order.Comment.Created,
                            Rating  = order.Comment.Rating,
                            Text    = order.Comment.Text
                        },
                        Tags = tagViewModels
                    });
示例#2
0
        public async Task <IActionResult> Order(string searchString, IList <int> tagIds)
        {
            var userId = await _accountManager.GetUserIdByNameAsync(User.Identity.Name);

            var orderViewModels = new List <OrderViewModel>();

            var orders = (await _orderManager.GetOrdersByTagsAsync(tagIds)).Where(order => order.ClientId != userId).ToList();

            if (!String.IsNullOrEmpty(searchString))
            {
                orders = orders.Where(order => order.Title.Contains(searchString)).ToList();
            }

            if (orders.Any())
            {
                foreach (var order in orders)
                {
                    var tags = await _tagManager.GetOrderTagsAsync(order.Id);

                    var tagViewModels = new List <TagViewModel>();

                    if (tags.Any())
                    {
                        foreach (var tag in tags)
                        {
                            tagViewModels.Add(new TagViewModel
                            {
                                Id   = tag.Id,
                                Name = tag.Name
                            });
                        }
                    }

                    var client = await _profileManager.GetProfileAsync(order.ClientId);

                    orderViewModels.Add(new OrderViewModel()
                    {
                        Id             = order.Id,
                        ClientUserName = await _accountManager.GetUserNameByIdAsync(order.ClientId),
                        ClientName     = client.Name,
                        ClientAvatar   = client.Avatar,
                        Description    = order.Description,
                        End            = order.End,
                        Price          = order.Price,
                        Start          = order.Start,
                        State          = order.State,
                        Title          = order.Title,
                        Tags           = tagViewModels,
                        ClientId       = order.ClientId
                    });
                }
            }

            var allTagsViewModels = new List <TagViewModel>();
            var allTags           = await _tagManager.GetAllTagsAsync();

            if (allTags.Any())
            {
                foreach (var tag in allTags)
                {
                    allTagsViewModels.Add(new TagViewModel()
                    {
                        Id   = tag.Id,
                        Name = tag.Name
                    });
                }
            }
            return(View((
                            allTagsViewModels,
                            orderViewModels)));
        }