Beispiel #1
0
        /// <inheritdoc />
        /// <summary>
        /// The track invoice.
        /// </summary>
        /// <param name="invoiceNo">
        /// The invoice No.
        /// </param>
        /// <returns>
        /// The <see cref="T:System.Threading.Tasks.Task" />.
        /// </returns>
        public async Task <UiInvoice> GetInvoice(string invoiceNo)
        {
            var invoice = await this.invoiceRepository.FindById(invoiceNo);

            if (invoice == null)
            {
                return(new UiInvoice());
            }

            var uiInvoice = new UiInvoice
            {
                Title       = invoice.Title,
                CreatedBy   = invoice.CreatedBy,
                Approved    = invoice.Approved,
                Status      = invoice.Status,
                CreatedOn   = invoice.CreatedOn,
                InvoiceNo   = invoice.InvoiceNo,
                LastUpdated = invoice.LastUpdated,
                UpdatedBy   = invoice.UpdatedBy
            };

            var invoiceItems = invoice.InvoiceItems;

            if (invoiceItems.Any())
            {
                var uiInvoiceItems = invoiceItems.Select(
                    x => new UiInvoiceItem {
                    Name = x.Name, Amount = x.Amount, Description = x.Description
                });

                uiInvoice.InvoiceItems.AddRange(uiInvoiceItems);
            }

            var authorities = invoice.Authorities;

            if (authorities.Any())
            {
                var uiAuthorities = authorities.Select(
                    x => new UiAuthority
                {
                    Name       = x.Name,
                    Department = x.Department,
                    Approved   = x.Approved,
                    ApprovedOn = x.ApprovedOn
                });

                uiInvoice.Authorities.AddRange(uiAuthorities);
            }

            return(uiInvoice);
        }
Beispiel #2
0
        /// <inheritdoc />
        /// <summary>
        /// The get user invoice.
        /// </summary>
        /// <param name="user">
        /// The user.
        /// </param>
        /// <returns>
        /// The <see cref="T:System.Threading.Tasks.Task" />.
        /// </returns>
        public async Task <UiUserInvoice> GetUserInvoices(string user)
        {
            var invoices = await this.invoiceRepository.FindByCreator(user);

            if (!invoices.Any())
            {
                return(new UiUserInvoice());
            }

            var userInvoices = new UiUserInvoice();

            if (invoices.Any())
            {
                foreach (var invoice in invoices)
                {
                    var uiInvoice = new UiInvoice
                    {
                        InvoiceNo   = invoice.InvoiceNo,
                        Approved    = invoice.Approved,
                        CreatedBy   = invoice.CreatedBy,
                        CreatedOn   = invoice.CreatedOn,
                        Title       = invoice.Title,
                        LastUpdated = invoice.LastUpdated,
                        UpdatedBy   = invoice.UpdatedBy,
                        Status      = invoice.Status
                    };

                    var recipient = invoice.Recipient;

                    var uiRecipient = new UiRecipient
                    {
                        Name            = recipient.Name,
                        Address         = recipient.Address,
                        RecipientNumber = recipient.RecipientNumber
                    };

                    uiInvoice.Recipient = uiRecipient;

                    var authorities = invoice.Authorities;

                    if (authorities.Any())
                    {
                        var uiAuthorities = invoice.Authorities.Select(
                            x => new UiAuthority
                        {
                            Name       = x.Name,
                            Department = x.Department,
                            Approved   = x.Approved,
                            ApprovedOn = x.ApprovedOn
                        });

                        uiInvoice.Authorities.AddRange(uiAuthorities);
                    }

                    var invoiceItems = invoice.InvoiceItems;

                    if (invoiceItems.Any())
                    {
                        var uiInvoiceItems = invoiceItems.Select(
                            x => new UiInvoiceItem {
                            Name = x.Name, Amount = x.Amount, Description = x.Description
                        });

                        uiInvoice.InvoiceItems.AddRange(uiInvoiceItems);
                    }

                    userInvoices.InvoicesCreatedByUser.Add(uiInvoice);
                }
            }

            var relatedAuthorities = await this.authorityRepository.FindRelatedInvoices(user);

            if (relatedAuthorities.Any())
            {
                foreach (var auth in relatedAuthorities)
                {
                    var invoice = auth.Invoice;

                    var uiInvoice = new UiInvoice
                    {
                        InvoiceNo   = invoice.InvoiceNo,
                        Approved    = invoice.Approved,
                        CreatedBy   = invoice.CreatedBy,
                        CreatedOn   = invoice.CreatedOn,
                        Title       = invoice.Title,
                        LastUpdated = invoice.LastUpdated,
                        UpdatedBy   = invoice.UpdatedBy,
                        Status      = invoice.Status
                    };

                    var recipient = invoice.Recipient;

                    var uiRecipient = new UiRecipient
                    {
                        Name            = recipient.Name,
                        Address         = recipient.Address,
                        RecipientNumber = recipient.RecipientNumber
                    };

                    uiInvoice.Recipient = uiRecipient;

                    var invoiceItems = invoice.InvoiceItems;

                    if (invoiceItems.Any())
                    {
                        var uiInvoiceItems = invoiceItems.Select(
                            x => new UiInvoiceItem {
                            Name = x.Name, Amount = x.Amount, Description = x.Description
                        });

                        uiInvoice.InvoiceItems.AddRange(uiInvoiceItems);
                    }

                    userInvoices.InvoicesApprovedByUser.Add(uiInvoice);
                }
            }

            return(userInvoices);
        }