public ActionResult PlaceOrder(int prodId, int ispId, ContractTerm contractTerm)
        {
            var  user        = svc.GetUser(User.Identity.GetUserId());
            var  orderUrl    = new UrlHelper(HttpContext.Request.RequestContext).Action("Edit", "Order", new { area = "ISPAdmin" }, Request.Url.Scheme);
            bool orderResult = false;

            //Process should not get this far but double check user is in Zone and can order
            if (user.Zone != null && user.Zone.AllowOrder)
            {
                orderResult = svc.PlaceOrder(user.Id, prodId, orderUrl, contractTerm);
                var product  = svc.GetProduct(prodId);
                var cap      = product.IsCapped ? product.Cap.ToString() : "";
                var isCapped = product.IsCapped ? "Capped" : "Uncapped";

                var email = new EmailDto
                {
                    Subject = "Order confirmation",
                    Body    = "Dear " + user.FirstName + "," +
                              "<br/><br/>Your order for " + product.ISP.Name + " " + product.LineSpeed.GetDisplayName() + " " +
                              isCapped + " " + cap + " has been received." +
                              "<br/><br/>If you have any queries then please contact <strong>" + product.ISP.Name +
                              "</strong> at " + product.ISP.EmailAddress + " or on " + product.ISP.LandlineNo + "." +
                              "<br/><br/>Warm regards" +
                              "<br/><br/>The Frogfoot team."
                };

                EmailSender.SendEmail(email, user);
            }

            return(RedirectToAction("OrderResult", new { user.Id, ispId, orderResult }));
        }
Example #2
0
        public ISet <Term <object> > GetTerms()
        {
            var contractTerm = new ContractTerm <object>("sell dealership", 1);

            contractTerm.As(new WrittenTerm());
            return(new HashSet <Term <object> >
            {
                contractTerm,
                ExpresslyConditionalTerm.Value,
            });
        }
Example #3
0
        /// <summary>
        /// 保存合同条款
        /// </summary>
        /// <param name="term">条款</param>
        /// <param name="contractGuid">合同Guid</param>
        private void SaveTerm(ContractTerm term, Guid contractGuid)
        {
            string sql;

            term.ContractGuid = contractGuid;

            if (term.ContractTermGUID == Guid.Empty)
            {
                sql = @"
INSERT  INTO [dbo].[Geek_ContractTerm]
        ( [ContractTermGUID] ,
          [CreatedTime] ,
          [CreatedGUID] ,
          [CreatedName] ,
          [ModifiedTime] ,
          [ModifiedGUID] ,
          [ModifiedName] ,
          [ContractGuid] ,
          [TermToField] ,
          [TermContent]
        )
VALUES  ( NEWID() ,
          GETDATE() ,
          '4230BC6E-69E6-46A9-A39E-B929A06A84E8' ,
          '系统管理员' ,
          GETDATE() ,
          '4230BC6E-69E6-46A9-A39E-B929A06A84E8' ,
          '系统管理员' ,
          @ContractGuid ,
          @TermToField ,
          @TermContent
        )";
            }
            else
            {
                sql = @"
UPDATE  [dbo].[Geek_ContractTerm]
SET     [ModifiedTime] = GETDATE() ,
        [ModifiedGUID] = '4230BC6E-69E6-46A9-A39E-B929A06A84E8' ,
        [ModifiedName] = '系统管理员' ,
        [TermContent] = @TermContent 
WHERE   ContractTermGUID = @ContractTermGUID";
            }

            using (var scope = ConnectionScope.GetExistOrCreate())
            {
                CPQuery.Create(sql, term).ExecuteNonQuery();
            }
        }
Example #4
0
        public void TestCompareTo()
        {
            var testSubject00 = new ContractTerm <object>("car parts", "car parts");
            var testSubject01 = new ContractTerm <object>("car parts", "car parts");

            var testResult = testSubject00.CompareTo(null);

            Assert.AreEqual(1, testResult);

            testResult = testSubject00.CompareTo(testSubject01);
            Assert.AreEqual(0, testResult);

            testSubject00.As(new WrittenTerm());
            testResult = testSubject00.CompareTo(testSubject01);
            Assert.AreEqual(-1, testResult);

            testResult = testSubject01.CompareTo(testSubject00);
            Assert.AreEqual(1, testResult);
        }
Example #5
0
        public void TestCompareTo_StdPrefInter()
        {
            var testSubject00 = new ContractTerm <object>("car parts", "car parts", new ExpressTerm());
            var testSubject01 = new ContractTerm <object>("car parts", "car parts", new ExpressTerm());

            var testResult = testSubject00.CompareTo(testSubject01);

            Assert.AreEqual(0, testResult);

            testSubject00 = new ContractTerm <object>("car parts", "car parts", new ExpressTerm());
            testSubject01 = new ContractTerm <object>("car parts", "car parts", new CourseOfPerformanceTerm());

            testResult = testSubject00.CompareTo(testSubject01);
            Assert.IsTrue(testResult < 0);

            testResult = testSubject01.CompareTo(testSubject00);
            Assert.IsTrue(testResult > 0);


            testSubject00 = new ContractTerm <object>("car parts", "car parts", new CourseOfPerformanceTerm());
            testSubject01 = new ContractTerm <object>("car parts", "car parts", new CourseOfDealingTerm());

            testResult = testSubject00.CompareTo(testSubject01);
            Assert.IsTrue(testResult < 0);

            testResult = testSubject01.CompareTo(testSubject00);
            Assert.IsTrue(testResult > 0);

            testSubject00 = new ContractTerm <object>("car parts", "car parts", new CourseOfDealingTerm());
            testSubject01 = new ContractTerm <object>("car parts", "car parts", new UsageOfTradeTerm());

            testResult = testSubject00.CompareTo(testSubject01);
            Assert.IsTrue(testResult < 0);

            testResult = testSubject01.CompareTo(testSubject00);
            Assert.IsTrue(testResult > 0);
        }
Example #6
0
 public void EditOrder(int orderid, int ffProductId, int ispProductId, OrderStatus status, string userId, ContractTerm clientContractTerm, List <FFProdEditDto> products)
 {
     orderRepo.EditOrder(orderid, ffProductId, ispProductId, status, userId, clientContractTerm, products);
 }
 public ActionResult Edit(int orderId, int ffProductId, int ispProductId, OrderStatus orderStatus, ContractTerm clienContractTerm, List <FFProdEditDto> ffProducts)
 {
     svc.EditOrder(orderId, ffProductId, ispProductId, orderStatus, User.Identity.GetUserId(), clienContractTerm, ffProducts);
     CreatePDF(orderId, orderStatus);
     return(Json(new { success = true }, JsonRequestBehavior.AllowGet));
 }
Example #8
0
        /// <summary>
        /// UpdateContractTerm
        /// </summary>
        /// <param name="contractTerm"></param>
        /// <returns>Task<bool></returns>
        private async Task <bool> UpdateContractTerm(ContractTerm contractTerm)
        {
            var result = await iContractTermLibrary.UpdateEntityByDapper(contractTerm).ConfigureAwait(false);

            return(result.Result);
        }
 public bool PlaceOrder(string userId, int prodId, string orderUrl, ContractTerm contractTerm)
 {
     return(orderRepo.ClientCreateOrder(userId, prodId, orderUrl, contractTerm));
 }
        public bool ClientCreateOrder(string userId, int prodId, string orderUrl, ContractTerm contractTerm)
        {
            try
            {
                var user    = db.Users.Include(u => u.Location).Include(u => u.Estate).Include(u => u.Zone).FirstOrDefault(u => u.Id == userId);
                var product = db.ISPProducts.Include(p => p.ISP).First(p => p.ISPProductId == prodId);
                var special = GetSpecial(user.Zone, product.IsSpecial);

                var precinctCode = "";

                if (user.Estate != null && !string.IsNullOrEmpty(user.Estate.EstateCode))
                {
                    precinctCode = user.Estate.EstateCode;
                }
                else if (!string.IsNullOrEmpty(user.Location.PrecinctCode))
                {
                    precinctCode = user.Location.PrecinctCode;
                }

                var currentDateTime = DateTime.Now;

                var order = new Order
                {
                    ISPId              = product.ISPId,
                    Client             = user,
                    ClientId           = userId,
                    Status             = OrderStatus.New,
                    CreatedDate        = currentDateTime,
                    CreatedByRole      = "Client",
                    ISPProduct         = product,
                    ISPProductId       = product.ISPProductId,
                    IsSpecial          = special != null,
                    Special            = special,
                    ClientContractTerm = contractTerm,
                    ISPOrderNo         = "Please provide",
                    FFOrderNo          = "placeholder",
                    OrderFFProducts    = new List <OrderFFProduct>
                    {
                        new OrderFFProduct
                        {
                            Quantity    = 1,
                            FFProductId =
                                db.FFProducts.FirstOrDefault(p => p.LineSpeed == product.LineSpeed).FFProductId
                        }
                    },
                    StatusList = new List <Status>
                    {
                        new Status {
                            OrderStatus = OrderStatus.New, TimeStamp = currentDateTime
                        },
                    }
                };

                product.Orders.Add(order);
                db.Orders.Add(order);
                order.Logs.Add(new Log {
                    UserId = userId, Type = UserAction.Create, OrderStatus = OrderStatus.New, TimeStamp = DateTime.Now
                });
                SaveChanges(db);

                //once you have the orderId then use that as the unique order number
                order.FFOrderNo = string.Format("FTTH-{0}-{1}-{2:D6}", product.ISP.ISPCode, precinctCode, order.OrderId);
                SaveChanges(db);
                EmailSender.SendISPNewOrderNotification(order, product.ISP, user, orderUrl);
                return(true);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public void EditOrder(int orderId, int ffProductId, int ispProductId, OrderStatus?status, string userId, ContractTerm clientContractTerm, List <FFProdEditDto> products)
        {
            var order = GetOrder(orderId);

            order.ISPProductId       = ispProductId;
            order.ClientContractTerm = clientContractTerm;

            var action = UserAction.Edit;

            if (status != null)
            {
                order.Status = (OrderStatus)status;
                order.StatusList.Add(new Status {
                    OrderStatus = (OrderStatus)status, TimeStamp = DateTime.Now
                });
            }

            //create defuaul line speed prod
            products.Add(new FFProdEditDto
            {
                action = true,
                id     = ffProductId,
                qty    = 1
            });

            //FFProdEditDto
            //true = add/update
            //false = delete
            //null = no change/do nothing
            foreach (var prod in products)
            {
                //add or update
                if (prod.action == true)
                {
                    //if prod exists then update it
                    if (order.OrderFFProducts.Any(p => p.FFProductId == prod.id))
                    {
                        var prodToUpdate = order.OrderFFProducts.First(p => p.FFProductId == prod.id);
                        prodToUpdate.Quantity = prod.qty;
                    }
                    else //if not exists then add it
                    {
                        order.OrderFFProducts.Add(new OrderFFProduct
                        {
                            OrderId     = order.OrderId,
                            FFProductId = prod.id,
                            Quantity    = prod.qty
                        });
                    }
                }
                db.SaveChanges();

                //remove
                if (prod.action == false)
                {
                    var orderFFProdToDelete = order.OrderFFProducts.FirstOrDefault(p => p.FFProductId == prod.id);
                    if (orderFFProdToDelete != null)
                    {
                        db.OrderFFProducts.Remove(orderFFProdToDelete);
                    }
                    db.SaveChanges();
                }
            }

            order.Logs.Add(new Log {
                UserId = userId, Type = action, OrderStatus = order.Status, TimeStamp = DateTime.Now
            });
            SaveChanges(db);

            EmailSender.SendRTNewOrderNotification(orderId);
        }