示例#1
0
        private List <TransactionLink> ParseTransactionLinks(XElement root)
        {
            var result = new List <TransactionLink>();

            var linksElement = root.Element(XmlParsersConfig.ElementLinks);
            var linkElements = linksElement.Elements(XmlParsersConfig.ElementTransactionLink);

            foreach (var xElement in linkElements)
            {
                var link = new TransactionLink()
                {
                    Id   = int.Parse(xElement.Attribute(XmlParsersConfig.AttributeId).Value),
                    Type = (TransactionLinkType)Enum.Parse(typeof(TransactionLinkType), xElement.Attribute(XmlParsersConfig.AttributeType).Value),
                    SourceTransactionKindId      = int.Parse(xElement.Attribute(XmlParsersConfig.AttributeSourceTransactionId).Value),
                    DestinationTransactionKindId = int.Parse(xElement.Attribute(XmlParsersConfig.AttributeDestinationTransactionId).Value),
                    SourceCompletion             = (TransactionCompletion)Enum.Parse(typeof(TransactionCompletion),
                                                                                     xElement.Attribute(XmlParsersConfig.AttributeSourceCompletion).Value),
                    DestinationCompletion = (TransactionCompletion)Enum.Parse(typeof(TransactionCompletion),
                                                                              xElement.Attribute(XmlParsersConfig.AttributeDestinationCompletion).Value),
                };

                var sourceCardinalityElement      = xElement.Element(XmlParsersConfig.ElementSourceCardinality);
                var destinationCardinalityElement = xElement.Element(XmlParsersConfig.ElementDestinationCardinality);

                var sourceCardinality = (TransactionLinkCardinality)Enum.Parse(typeof(TransactionLinkCardinality),
                                                                               sourceCardinalityElement.Attribute(XmlParsersConfig.AttributeCardinality).Value);

                var destinationCardinality = (TransactionLinkCardinality)Enum.Parse(typeof(TransactionLinkCardinality),
                                                                                    sourceCardinalityElement.Attribute(XmlParsersConfig.AttributeCardinality).Value);

                link.SourceCardinality      = sourceCardinality;
                link.DestinationCardinality = destinationCardinality;

                if (sourceCardinality == TransactionLinkCardinality.Interval)
                {
                    var intervalElement = sourceCardinalityElement.Element(XmlParsersConfig.ElementInterval);
                    var min             = int.Parse(intervalElement.Attribute(XmlParsersConfig.AttributeMin).Value);
                    var max             = int.Parse(intervalElement.Attribute(XmlParsersConfig.AttributeMax).Value);

                    link.SourceCardinalityInterval = new CardinalityInterval(min, max);
                }

                if (destinationCardinality == TransactionLinkCardinality.Interval)
                {
                    var intervalElement = destinationCardinalityElement.Element(XmlParsersConfig.ElementInterval);
                    var min             = int.Parse(intervalElement.Attribute(XmlParsersConfig.AttributeMin).Value);
                    var max             = int.Parse(intervalElement.Attribute(XmlParsersConfig.AttributeMax).Value);

                    link.DestinationCardinalityInterval = new CardinalityInterval(min, max);
                }

                result.Add(link);
            }

            return(result);
        }
示例#2
0
        private List <TransactionKind> GetTransactionDefinitions(ProcessKind process)
        {
            var t1 = new TransactionKind("T1", "Rental contracting", process.Id, actorRenter.Id, actorRentalContracter.Id);
            var t2 = new TransactionKind("T2", "Rental payment", process.Id, actorRentalContracter.Id, actorRenter.Id);
            var t3 = new TransactionKind("T3", "Car pick up", process.Id, actorDriver.Id, actorCarIssuer.Id);
            var t4 = new TransactionKind("T4", "Car drop off", process.Id, actorCarIssuer.Id, actorDriver.Id);
            var t5 = new TransactionKind("T5", "Penalty payment", process.Id, actorCarIssuer.Id, actorDriver.Id);

            t1.AddChild(t2);
            t3.AddChild(t4);
            t3.AddChild(t5);

            process.AddTransactionLink(t1, t2, TransactionCompletion.Requested, TransactionCompletion.Promised, TransactionLinkType.Response);
            process.AddTransactionLink(t2, t1, TransactionCompletion.Promised, TransactionCompletion.Promised, TransactionLinkType.Waiting);
            process.AddTransactionLink(t2, t1, TransactionCompletion.Accepted, TransactionCompletion.Executed, TransactionLinkType.Waiting);

            process.AddTransactionLink(t3, t4, TransactionCompletion.Promised, TransactionCompletion.Requested, TransactionLinkType.Response);
            process.AddTransactionLink(t4, t3, TransactionCompletion.Promised, TransactionCompletion.Executed, TransactionLinkType.Waiting);

            var linkT4T5Reject = new TransactionLink()
            {
                SourceTransactionKindId      = t4.Id,
                DestinationTransactionKindId = t5.Id,
                SourceCompletion             = TransactionCompletion.Rejected,
                DestinationCompletion        = TransactionCompletion.Requested,
                SourceCardinality            = TransactionLinkCardinality.ZeroToOne,
                Type = TransactionLinkType.Response
            };

            process.AddTransactionLink(linkT4T5Reject);

            var linkT5T4Ac = new TransactionLink()
            {
                SourceTransactionKindId      = t5.Id,
                DestinationTransactionKindId = t4.Id,
                SourceCompletion             = TransactionCompletion.Accepted,
                DestinationCompletion        = TransactionCompletion.Accepted,
                DestinationCardinality       = TransactionLinkCardinality.ZeroToOne,
                Type = TransactionLinkType.Waiting
            };

            process.AddTransactionLink(linkT5T4Ac);


            return(new List <TransactionKind> {
                t1, t3
            });
        }
        public IActionResult ViewDetails(int id)
        {
            StatusNames statusNames = new StatusNames();

            ViewBag.StatusEs = new SelectList(statusNames.GetStatuses().Where(s => s.Status != 1), "Status", "Name");
            TransactionDetails details = new TransactionDetails();
            Transactions       tr      = transactionService.GetTransaction(id);
            TransactionLink    link    = transactionLinkService.GetTransactionLinks().Where(s => s.TransactionID == id).FirstOrDefault();

            details.FirstName         = tr.FirstName;
            details.LastName          = tr.LastName;
            details.BuyerEmail        = tr.BuyerEmail;
            details.ItemName          = tr.ItemName;
            details.DescriptionOfItem = tr.DescriptionOfItem;
            details.Amount            = tr.Amount;
            details.DeliveryType      = tr.DeliveryTypeID == 1 ? "Free Delivery" : tr.DeliveryTypeID == 2 ? "Paid Delivery" : "";
            details.Deliveryfee       = tr.Deliveryfee != 0 ? tr.Deliveryfee : tr.Deliveryfee == 0 ? 0 : 0;
            details.DeliveryTime      = tr.DeliveryTime;
            details.TermsOfReturns    = tr.TermsOfReturns;
            details.ProductImageUrl   = tr.ProductImageUrl;
            details.ProductImageUrl1  = tr.ProductImageUrl1;
            details.ProductImageUrl2  = tr.ProductImageUrl2;
            details.ProductImageUrl3  = tr.ProductImageUrl3;
            details.ProductImageUrl4  = tr.ProductImageUrl4;
            details.SellerName        = tr.SellerName;
            details.SellerEmail       = tr.SellerEmail;
            details.escrowfee         = tr.escrowfee;
            details.Totalfee          = tr.Totalfee;
            details.LinkCode          = link.LinkCode;
            details.LinkID            = link.Id;
            details.TransactionID     = tr.Id;
            details.statusID          = tr.Status;
            details.Status            = tr.Status == 1 ? "<div style=\"color:red\">Pending<div>" : tr.Status == 2 ? "<div style=\"color:yellow\">Paid</div>" : tr.Status == 3 ? "<div style=\"color:purple\">Shipped</div>" : tr.Status == 4 ? "<div style=\"color:green\">Receieved</div>" : "";

            return(View(details));
        }
示例#4
0
 private void SentMailUpdate(Transactions tr, TransactionLink link)
 {
 }
        public IActionResult GenerateLink(IFormCollection form, [FromServices] IEmailSender emailSender, [FromServices] IConfiguration configuration)
        {
            var users = GetCurrentUserAsync();
            //transactiona.SellerID = users.Result.Id;
            TransactionVM transaction = JsonConvert.DeserializeObject <TransactionVM>(form["EmployeeInfo"]);

            try
            {
                Transactions transactions = new Transactions();
                if (transaction.UserRoleId == 1)
                {
                    transactions.SellerName  = users.Result.FirstName + " " + users.Result.LastName;
                    transactions.SellerEmail = users.Result.Email;
                    transactions.SellerID    = users.Result.Id;
                    transactions.BuyerEmail  = transaction.Email;
                }
                if (transaction.UserRoleId == 2)
                {
                    transactions.SellerEmail = transaction.SellerEmail;
                    transactions.BuyerEmail  = users.Result.Email;
                }
                transactions.UserID            = users.Result.Id;
                transactions.FirstName         = transaction.FirstName;
                transactions.LastName          = transaction.LastName;
                transactions.ItemName          = transaction.ItemName;
                transactions.Amount            = transaction.Amount;
                transactions.UserRoleId        = transaction.UserRoleId;
                transactions.DescriptionOfItem = transaction.DescriptionOfItem;
                transactions.DeliveryTypeID    = transaction.DeliveryTypeID;
                transactions.Deliveryfee       = transaction.Deliveryfee;
                transactions.DeliveryWindowID  = transaction.DeliveryWindowID;
                transactions.DeliveryTime      = transaction.DeliveryTime;
                transactions.TotalDeliveryTime = transaction.DeliveryWindowID == 15 ? transaction.DeliveryTime + 14 : transaction.DeliveryWindowID + transaction.DeliveryTime;
                transactions.TermsOfReturns    = transaction.TermsOfReturns;
                transactions.AddDate           = DateTime.Now;
                transactions.Status            = 1;
                int i           = 0;
                var uploadFiles = Request.Form.Files;
                foreach (var file in uploadFiles)
                {
                    Guid   nameguid    = Guid.NewGuid();
                    string webrootpath = env.WebRootPath;
                    string filename    = nameguid.ToString();
                    string extension   = Path.GetExtension(file.FileName);
                    string foldername  = "ProductImage";
                    filename = filename + extension;
                    string path = Path.Combine(webrootpath, foldername, filename);
                    using (var fileStream = new FileStream(path, FileMode.Create))
                    {
                        file.CopyTo(fileStream);
                    }
                    string pathName = Path.Combine(foldername, filename);
                    if (i == 0)
                    {
                        transactions.ProductImageUrl = "~/ProductImage/" + filename;
                    }
                    if (i == 1)
                    {
                        transactions.ProductImageUrl1 = "~/ProductImage/" + filename;
                    }
                    if (i == 2)
                    {
                        transactions.ProductImageUrl2 = "~/ProductImage/" + filename;
                    }
                    if (i == 3)
                    {
                        transactions.ProductImageUrl3 = "~/ProductImage/" + filename;
                    }
                    if (i == 4)
                    {
                        transactions.ProductImageUrl4 = "~/ProductImage/" + filename;
                    }
                    i++;
                }
                int feeID = GetFeeIDByAmount(transaction.Amount);
                var efp   = feeService.GetFee(feeID).Percentage;
                var ef    = transactions.escrowfee = (transaction.Amount * efp) / 100;
                if (transaction.Deliveryfee != null)
                {
                    transactions.Totalfee = transaction.Amount + transaction.Deliveryfee.Value + ef;
                }
                else if (transaction.Deliveryfee == null)
                {
                    transactions.Totalfee = transaction.Amount + ef;
                }
                transactionService.InsertTransaction(transactions);
                TransactionLink link = new TransactionLink();
                Guid            guid = Guid.NewGuid();
                link.SellerID      = transactions.SellerID;
                link.TransactionID = transactions.Id;
                link.LinkCode      = guid;
                link.AddDate       = DateTime.Now;
                link.Status        = 1;
                transactionLinkService.InsertTransactionLink(link);
                string coded  = link.LinkCode.ToString();
                var    linkas = Url.Action("TransactionView", "MyTransaction", new { code = link.LinkCode }, Request.Scheme, Request.Host.ToString());


                var title  = "Pay Guardex: You have a transaction.";
                var title1 = "Pay Guardex: You have started a transaction.";
                ///mail to buyer:
                var mailbody = "<html>" +
                               "<head>" +
                               "<link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css\" integrity=\"sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk\" crossorigin=\"anonymous\">" +
                               "</head>" +
                               "<body>" +
                               "<div class=\"container\">" +
                               "<div class=\"row\">" +
                               "<div class=\"col-md-12\" style=\"padding:30px;background-color:#d8e9ff\">" +
                               "<h3 style=\"color:forestgreen\">You have a transaction on Pay Guardex</h3>" +
                               "<div>" +
                               "<p>You have transaction with " + transactions.SellerEmail + " </p>" +
                               "</div>" +
                               "<div>" +
                               "<p>" + transactions.SellerEmail + " has created a transaction with you on payguardex.com.Your transaction code is :<br><div style=\"text-align:center\"><h5> <b> " + coded + "</b></h5></div></p>" +
                               "<p>Use the code to manage transaction and here is the bank information for your payment.</p>" +
                               "<p>Bank informations goes here</p>" +
                               "<p>Please visit the link or click the button to provide us payment documents.</p>" +
                               "<p>" + linkas + "</p>" +
                               "</div>" +
                               "<div style=\"text-align:center\">" +
                               "<a href=" + linkas + " class=\"btn btn-success\"> Manage Transaction : </a>" +
                               "</div>" +
                               "</div>" +
                               "</div>" +
                               "</div>" +
                               "</ body >" +
                               "</html>";
                ///mail to seller
                var mailbody1 = "<html>" +
                                "<head>" +
                                "<link rel=\"stylesheet\" href=\"https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css\" integrity=\"sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk\" crossorigin=\"anonymous\">" +
                                "</head>" +
                                "<body>" +
                                "<div class=\"container\">" +
                                "<div class=\"row\">" +
                                "<div class=\"col-md-12\" style=\"padding:30px;background-color:#d8e9ff\">" +
                                "<h3 style=\"color:forestgreen\">You have started a transaction on Pay Guardex</h3>" +
                                "<div>" +
                                "<p>You started have transaction with " + transactions.BuyerEmail + " </p>" +
                                "</div>" +
                                "<div>" +
                                "<p>Your transaction code is : " + coded + "</p>" +
                                "<p>Please do not share this code to anyone.</p>" +
                                "<p>We have sent an email to buyer.</p>" +
                                "<p></p>" +
                                "</div>" +
                                "<div style=\"text-align:center\">" +
                                "<a href=" + linkas + " class=\"btn btn-success\"> Manage Transaction</a>" +
                                "</div>" +
                                "</div>" +
                                "</div>" +
                                "</div>" +
                                "</ body >" +
                                "</html>";

                emailSender.Post(
                    subject: title,
                    body: mailbody,
                    recipients: transactions.BuyerEmail,
                    sender: configuration["AdminContact"]);
                emailSender.Post(
                    subject: title1,
                    body: mailbody1,
                    recipients: transactions.SellerEmail,
                    sender: configuration["AdminContact"]);
                return(Json(new { success = true, link = coded }));
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, message = ex.Message }));
            }
        }
 public void UpdateTransactionLink(TransactionLink TransactionLink)
 {
     TransactionLinkRepository.Update(TransactionLink);
 }
 public void InsertTransactionLink(TransactionLink TransactionLink)
 {
     TransactionLinkRepository.Insert(TransactionLink);
 }
        public void DeleteTransactionLink(int id)
        {
            TransactionLink TransactionLink = TransactionLinkRepository.Get(id);

            TransactionLinkRepository.Remove(TransactionLink);
        }