/// <inheritdoc />
        public double GetTotalCost(GenericRequestModel grm)
        {
            var selectStatement = $@"SELECT SUM(Price) AS total
                                    FROM Item
                                    JOIN ShoppingCart_LinkTable
                                    ON Item.Id = ShoppingCart_LinkTable.ItemId
                                    WHERE ShoppingCart_LinkTable.UserId = {grm.CurrentUser.Id}";

            //Open DB
            _dbconn.Open();

            //Start query
            try
            {
                using (var cmd = _dbconn.CreateCommand())
                {
                    cmd.CommandText = selectStatement;
                    var rdr = cmd.ExecuteReader();

                    return(rdr.Read() ? Convert.ToDouble(rdr["total"]) : 0d);
                }
            }
            catch (Exception)
            {
                //@TODO: Add logging
                return(0d);
            }
            finally
            {
                if (_dbconn.State == ConnectionState.Open)
                {
                    _dbconn.Close();
                }
            }
        }
Esempio n. 2
0
        public void AddItems_ControllerTest()
        {
            //Arrange
            Bootstrapper.Run();
            DatabaseDriver.ValidateDBStatus();
            var controller = Bootstrapper._container.Resolve <IShoppingCartController>();
            var service    = Bootstrapper._container.Resolve <IShoppingCartService>();
            var itemList   = new List <Item>
            {
                new Item
                {
                    Id          = 6,
                    Name        = "Test Item",
                    Description = "Test Description",
                    Price       = 9999
                }
            };
            var user = new User
            {
                Id = 1
            };
            var grm = new GenericRequestModel
            {
                CurrentUser = user,
                Items       = itemList
            };

            //Act
            //var result = controller.AddItems(grm);
            var result = service.AddItems(grm);

            //Assert
            Assert.AreEqual(result, true);
        }
Esempio n. 3
0
        public IHttpActionResult ListItems([FromBody] GenericRequestModel grm)
        {
            var result = _svc.ListItems(grm);

            return(Ok(new
            {
                result
            }));
        }
Esempio n. 4
0
        public IHttpActionResult ClearCart([FromBody] GenericRequestModel grm)
        {
            var result = _svc.ClearCart(grm);

            return(Ok(new
            {
                result
            }));
        }
Esempio n. 5
0
        public IHttpActionResult GetSalesTax([FromBody] GenericRequestModel grm)
        {
            var result = _svc.GetSalesTax(grm);

            return(Ok(new
            {
                result
            }));
        }
Esempio n. 6
0
        public IHttpActionResult ApplyBuyOneGetOne(GenericRequestModel grm)
        {
            var result = _svc.ApplyBuyOneGetOne(grm);

            return(Ok(new
            {
                result
            }));
        }
        /// <inheritdoc />
        public double GetSalesTax(GenericRequestModel grm)
        {
            //Retrieve price
            var price = GetTotalCost(grm);

            //Retrieve sales tax
            var taxRate = ExternCall.GetTaxRate(grm.CurrentUser.RegionCode);

            //Return value
            return(price * taxRate);
        }
        /// <inheritdoc />
        public IEnumerable <Item> ListItems(GenericRequestModel grm)
        {
            var selectStatement =
                $@"SELECT Item.Id, Item.Name, Item.Description, Item.Price 
                    FROM ShoppingCart_LinkTable JOIN Item
                    on ShoppingCart_LinkTable.ItemId = Item.Id 
                    WHERE ShoppingCart_LinkTable.UserId = {grm.CurrentUser.Id}";

            //Open DB
            _dbconn.Open();

            //Start query
            try
            {
                using (var cmd = _dbconn.CreateCommand())
                {
                    cmd.CommandText = selectStatement;
                    var rdr = cmd.ExecuteReader();

                    //Instantiate return object and iterate results
                    var returnList = new List <Item>();
                    while (rdr.Read())
                    {
                        returnList.Add(new Item
                        {
                            Description = Convert.ToString(rdr["Description"]),
                            Id          = Convert.ToInt32(rdr["Id"]),
                            Name        = Convert.ToString(rdr["Name"]),
                            Price       = Convert.ToDouble(rdr["Price"])
                        });
                    }

                    //Return results
                    return(returnList);
                }
            }
            catch (Exception)
            {
                //@TODO: Add logging
                return(new List <Item>());
            }
            finally
            {
                if (_dbconn.State == ConnectionState.Open)
                {
                    _dbconn.Close();
                }
            }
        }
        public JsonResult GetAuthenticationStatus(GenericRequestModel request)
        {
            GenericResultModel a = new GenericResultModel()
            {
                ErrorReference        = "",
                Feedback              = "",
                HasError              = false,
                IsAuthenticationError = false,
                IsValidationError     = false,
                MaintenanceMessage    = "",
                MaintenanceMode       = false,
                FullName              = request.SessionUserName
            };

            return(Json(a, JsonRequestBehavior.DenyGet));
        }
Esempio n. 10
0
        public IActionResult SendTransaction([FromBody] GenericRequestModel <string> txHex)
        {
            string txid       = string.Empty;
            string errMessage = string.Empty;

            try
            {
                txid = CoinService.SendRawTransaction(txHex.Data, false);
                var raw = Newtonsoft.Json.JsonConvert.SerializeObject(CoinService.DecodeRawTransaction(txHex.Data));

                string cmdString = "INSERT INTO [TransactionBroadcast] ([TxId],[BroadcastTime],[RawTransaction]) VALUES (@TxId, @BroadcastTime, @RawTransaction)";
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    using (SqlCommand comm = new SqlCommand())
                    {
                        comm.Connection  = conn;
                        comm.CommandText = cmdString;
                        comm.Parameters.AddWithValue("@TxId", txid);
                        comm.Parameters.AddWithValue("@BroadcastTime", DateTime.UtcNow);
                        comm.Parameters.AddWithValue("@RawTransaction", raw);
                        try
                        {
                            conn.Open();
                            comm.ExecuteNonQuery();
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("SQL Error" + ex.Message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(BadRequest(new ErrorModel()
                {
                    Error = "Transactions pending, please try again after 1 minute."
                }));
            }

            return(new ObjectResult(new { tx = txid }));
        }
Esempio n. 11
0
        /// <inheritdoc />
        public double ApplyBuyOneGetOne(GenericRequestModel grm)
        {
            //Create select statement
            var selectStatement = $@"SELECT SUM(Price) AS total
                                    FROM Item
                                    JOIN ShoppingCart_LinkTable
                                    ON ShoppingCart_LinkTable.ItemId = Item.Id
                                    WHERE UserId = {grm.CurrentUser.Id}
                                    AND Item.Id NOT IN (
                                        SELECT bItem.Id FROM Item as fItem
                                        JOIN Item as bItem
                                        ON fItem.BuyOneGetOne_ItemId = bItem.Id)";

            //Open DB
            _dbconn.Open();

            //Start query
            try
            {
                using (var cmd = _dbconn.CreateCommand())
                {
                    cmd.CommandText = selectStatement;
                    var rdr = cmd.ExecuteReader();

                    return(rdr.Read() ? Convert.ToDouble(rdr["total"]) : 0d);
                }
            }
            catch (Exception)
            {
                //@TODO: Add logging
                return(0d);
            }
            finally
            {
                if (_dbconn.State == ConnectionState.Open)
                {
                    _dbconn.Close();
                }
            }
        }
Esempio n. 12
0
 /// <inheritdoc />
 public bool AddItems(GenericRequestModel grm) =>
 BulkExecute(grm.Items.Select(item =>
                              $"INSERT INTO ShoppingCart_LinkTable (UserId, ItemId) VALUES ({grm.CurrentUser.Id}, {item.Id})")
             .ToList());
Esempio n. 13
0
 /// <inheritdoc />
 public IEnumerable <Item> ListItems(GenericRequestModel grm) =>
 _vreader.ListItems(grm);
Esempio n. 14
0
 /// <inheritdoc />
 public bool ClearCart(GenericRequestModel grm) =>
 _vreader.ClearCart(grm);
Esempio n. 15
0
 /// <inhericdoc />
 public bool ClearCart(GenericRequestModel grm) =>
 Execute($"DELETE FROM ShoppingCart_LinkTable WHERE UserId = {grm.CurrentUser.Id}");
Esempio n. 16
0
        public static NavigationStructureResultModel GetUserNavigationStructure(GenericRequestModel request)
        {
            NavigationStructureResultModel result = new NavigationStructureResultModel()
            {
                HasError = false, Feedback = "", MaintenanceMode = false, MaintenanceMessage = ""
            };

            result.ComplianceNavigation   = new List <NavigationItemModel>();
            result.DeclarationsNavigation = new List <NavigationItemModel>();
            bool showComplianceAdminNavigation   = false;
            bool showDeclarationsAdminNavigation = false;

            try
            {
                using (var dm = new Entities(request.SessionUserName))
                {
                    showComplianceAdminNavigation = request.UserRoles.Contains("Developers") ||
                                                    request.UserRoles.Contains("Compliance Super User") ||
                                                    request.UserRoles.Contains("Compliance Officer") ||
                                                    request.UserRoles.Contains("Chief Compliance & Ethics Officer") ||
                                                    request.UserRoles.Contains("Senior Compliance Manager");

                    //COMPLIANCE NAVIGATION
                    bool showCompliance = false;
                    if (showComplianceAdminNavigation)
                    {
                        showCompliance = true;
                    }
                    if (showCompliance)
                    {
                        result.ComplianceNavigation.Add(new NavigationItemModel()
                        {
                            IsParent  = false,
                            ItemTitle = "Compliance Home",
                            RoutePath = "compliance-home"
                        });
                    }

                    result.ComplianceNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "My Compliance Officer",
                        RoutePath = "compliance-officer-list"
                    });

                    //COMPLIANCE ADMIN NAVIGATION
                    if (showComplianceAdminNavigation)
                    {
                        var adminNavigation = new NavigationItemModel
                        {
                            IsParent  = true,
                            ItemTitle = "Admin"
                        };
                        result.ComplianceNavigation.Insert(0, adminNavigation);

                        if (request.UserRoles.Contains("Compliance Super User") ||
                            request.UserRoles.Contains("Senior Compliance Manager"))
                        {
                            adminNavigation.ChildItems.Add(new NavigationItemModel()
                            {
                                IsParent  = false,
                                ItemTitle = "Confirmations Planning",
                                RoutePath = "compliance-planning"
                            });
                        }
                        if (request.UserRoles.Contains("Compliance Super User"))
                        {
                            adminNavigation.ChildItems.Add(new NavigationItemModel()
                            {
                                IsParent  = false,
                                ItemTitle = "Manage User Roles",
                                RoutePath = "compliance-user-roles"
                            });
                        }

                        if (request.UserRoles.Contains("Compliance Officer") ||
                            request.UserRoles.Contains("Senior Compliance Manager") ||
                            request.UserRoles.Contains("Chief Compliance & Ethics Officer"))
                        {
                            if (request.UserRoles.Contains("Compliance Officer") ||
                                request.UserRoles.Contains("Compliance Super User") ||
                                request.UserRoles.Contains("Senior Compliance Manager"))
                            {
                                adminNavigation.ChildItems.Add(new NavigationItemModel()
                                {
                                    IsParent   = false,
                                    ItemTitle  = "Employees",
                                    RoutePath  = "compliance-employees",
                                    beginGroup = true
                                });
                            }
                            if (request.UserRoles.Contains("Compliance Officer") ||
                                request.UserRoles.Contains("Senior Compliance Manager") ||
                                request.UserRoles.Contains("Compliance Super User"))
                            {
                                adminNavigation.ChildItems.Add(new NavigationItemModel()
                                {
                                    IsParent  = false,
                                    ItemTitle = "Conditional Items",
                                    RoutePath = "compliance-conditionals"
                                });
                            }
                            if (request.UserRoles.Contains("Compliance Officer") ||
                                request.UserRoles.Contains("Senior Compliance Manager") ||
                                request.UserRoles.Contains("Compliance Super User"))
                            {
                                adminNavigation.ChildItems.Add(new NavigationItemModel()
                                {
                                    IsParent  = false,
                                    ItemTitle = "Manual Data Capture",
                                    RoutePath = "compliance-manual-capture"
                                });
                            }

                            if (request.UserRoles.Contains("Compliance Officer") ||
                                request.UserRoles.Contains("Chief Compliance & Ethics Officer") ||
                                request.UserRoles.Contains("Senior Compliance Manager") ||
                                request.UserRoles.Contains("Compliance Super User"))
                            {
                                var phaseCompletion = new NavigationItemModel()
                                {
                                    IsParent  = true,
                                    ItemTitle = "Phase Completion",
                                    //RoutePath = "compliance-phasecompletion",
                                    ChildItems = new List <NavigationItemModel>()
                                };
                                phaseCompletion.ChildItems.Add(new NavigationItemModel
                                {
                                    IsParent  = false,
                                    ItemTitle = "Phase 1",
                                    RoutePath = "compliance-phasecompletion-1"
                                });
                                if (request.UserRoles.Contains("Chief Compliance & Ethics Officer"))
                                {
                                    phaseCompletion.ChildItems.Add(new NavigationItemModel
                                    {
                                        IsParent  = false,
                                        ItemTitle = "Phase 2",
                                        RoutePath = "compliance-phasecompletion-2"
                                    });
                                    phaseCompletion.ChildItems.Add(new NavigationItemModel
                                    {
                                        IsParent  = false,
                                        ItemTitle = "Phase 3",
                                        RoutePath = "compliance-phasecompletion-3"
                                    });
                                    phaseCompletion.ChildItems.Add(new NavigationItemModel
                                    {
                                        IsParent  = false,
                                        ItemTitle = "Phase 4",
                                        RoutePath = "compliance-phasecompletion-4"
                                    });
                                }
                                adminNavigation.ChildItems.Add(phaseCompletion);
                                adminNavigation.ChildItems.Add(new NavigationItemModel
                                {
                                    IsParent  = false,
                                    ItemTitle = "Conditional Reports",
                                    RoutePath = "compliance-conditional-reports"
                                });
                                adminNavigation.ChildItems.Add(new NavigationItemModel
                                {
                                    IsParent  = false,
                                    ItemTitle = "OME/s Conditional Report",
                                    RoutePath = "compliance-ome-conditional-report"
                                });
                                adminNavigation.ChildItems.Add(new NavigationItemModel
                                {
                                    IsParent  = false,
                                    ItemTitle = "Conditional Issue Log Audit",
                                    RoutePath = "compliance-conditionals-issue-log-audit"
                                });
                            }

                            var reports = new NavigationItemModel()
                            {
                                IsParent   = true,
                                ItemTitle  = "Reports",
                                beginGroup = true
                            };
                            adminNavigation.ChildItems.Add(reports);
                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent  = false,
                                ItemTitle = "Employee Status",
                                RoutePath = "compliance-reporting-employee-status"
                            });
                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent  = false,
                                ItemTitle = "Employee Non-Participation",
                                RoutePath = "compliance-reporting-employee-non-participation"
                            });
                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent   = false,
                                ItemTitle  = "Conditional Status",
                                RoutePath  = "compliance-reporting-conditional-status",
                                beginGroup = true
                            });
                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent  = false,
                                ItemTitle = "Conditional Risk Categories",
                                RoutePath = "compliance-reporting-conditional-risk-categories"
                            });
                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent  = false,
                                ItemTitle = "Conditional Reasons for Previously Reported",
                                RoutePath = "compliance-reporting-conditional-confirmed-reported-reasons"
                            });

                            reports.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent   = false,
                                ItemTitle  = "Confirmations Per Day",
                                RoutePath  = "compliance-confirmations-report-daily",
                                beginGroup = true
                            });

                            var emails = new NavigationItemModel()
                            {
                                IsParent  = true,
                                ItemTitle = "Email Listings",
                                //RoutePath = "compliance-emailnotificationsummary",
                                ChildItems = new List <NavigationItemModel>()
                            };
                            emails.ChildItems.Add(new NavigationItemModel
                            {
                                IsParent   = false,
                                ItemTitle  = "Summary List",
                                RoutePath  = "compliance-emailnotificationsummary",
                                ChildItems = new List <NavigationItemModel>()
                            });
                            emails.ChildItems.Add(new NavigationItemModel()
                            {
                                IsParent  = false,
                                ItemTitle = "Detail List",
                                RoutePath = "compliance-emailnotificationdetail"
                            });
                            adminNavigation.ChildItems.Add(emails);
                        }
                    }

                    result.DeclarationsNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "Home",
                        RoutePath = "declarations-home"
                    });

                    //Declarations
                    var declarationsMenu = new NavigationItemModel()
                    {
                        IsParent  = true,
                        ItemTitle = "Declaration"
                                    //RoutePath = "declarations-process-information"
                    };
                    //:Personal Information
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Personal Information",
                        RoutePath = "declarations-process-information"
                    });
                    //:Directorships
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Directorships",
                        RoutePath = "declarations-process-directorships"
                    });
                    //:Shares
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Financial Interests / Shares",
                        RoutePath = "declarations-process-shares"
                    });
                    //:Conflicts of Interest
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Conflict of Interest",
                        RoutePath = "declarations-process-conflicts"
                    });
                    //:Private Work
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Private Work",
                        RoutePath = "declarations-process-work"
                    });
                    //:Gifts
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent  = false,
                        ItemTitle = "Gifts & Entertainment",
                        RoutePath = "declarations-process-gifts"
                    });
                    //:Summary Page
                    declarationsMenu.ChildItems.Add(new NavigationItemModel
                    {
                        IsParent   = false,
                        ItemTitle  = "Summary Page",
                        RoutePath  = "declarations-process-summary",
                        beginGroup = true,
                        ShowBadge  = false
                    });
                    result.DeclarationsNavigation.Add(declarationsMenu);
                    //Related Parties
                    result.DeclarationsNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "Related Parties",
                        RoutePath = "declarations-related-parties"
                    });
                    result.DeclarationsNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "Summary Page",
                        RoutePath = "declarations-process-summary"
                    });
                    result.DeclarationsNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "Policies",
                        RoutePath = "declarations-policies"
                    });
                    result.DeclarationsNavigation.Add(new NavigationItemModel()
                    {
                        IsParent  = false,
                        ItemTitle = "Help",
                        RoutePath = "declarations-help"
                    });
                }
            }
            catch (Exception error)
            {
                var errorState = ErrorHandling.HandleError(error);
                result.Feedback          = errorState.ErrorMessage;
                result.IsValidationError = errorState.IsValidationError;
                result.HasError          = true;
            }

            return(result);
        }
Esempio n. 17
0
 /// <inheritdoc />
 public double GetTotalCost(GenericRequestModel grm) =>
 _vreader.GetTotalCost(grm);
Esempio n. 18
0
 /// <inheritdoc />
 public double GetSalesTax(GenericRequestModel grm) =>
 _vreader.GetSalesTax(grm);
Esempio n. 19
0
 /// <inheritdoc />
 public double ApplyBuyOneGetOne(GenericRequestModel grm) =>
 _vreader.ApplyBuyOneGetOne(grm);
Esempio n. 20
0
 /// <inheritdoc />
 public bool RemoveItems(GenericRequestModel grm) =>
 _vreader.RemoveItems(grm);
        public IActionResult SendTransaction([FromBody] GenericRequestModel <string> txHex)
        {
            var    watch        = System.Diagnostics.Stopwatch.StartNew();
            string txid         = string.Empty;
            string errMessage   = string.Empty;
            bool   isInstantPay = true;

            try
            {
                //txid = CoinService.SendRawTransaction(txHex.Data, false);

                var rawTx = CoinService.DecodeRawTransaction(txHex.Data);

                var senderTxs = rawTx.Vin.Select(t => new TransactionList()
                {
                    Txid = t.TxId, Index = Convert.ToInt32(t.Vout)
                }).ToList();
                isInstantPay = CheckInstantPay(senderTxs);

                try
                {
                    txid = CoinService.SendRawTransaction(txHex.Data, false, isInstantPay);
                }
                catch (System.Exception ex)
                {
                    if (ex.Message.IndexOf("Not a valid InstantSend") > -1)
                    {
                        try
                        {
                            txid = CoinService.SendRawTransaction(txHex.Data, false, false);
                        }
                        catch (System.Exception newEx)
                        {
                            return(BadRequest(new ErrorModel()
                            {
                                Error = "Transactions pending, please try again after 1 minute.", Description = newEx.Message
                            }));
                        }
                    }
                    return(BadRequest(new ErrorModel()
                    {
                        Error = "Transactions pending, please try again after 1 minute.", Description = ex.Message
                    }));
                }

                Task.Run(() => SaveDbTransaction(txid, txHex.Data));
            }
            catch (Exception ex)
            {
                return(BadRequest(new ErrorModel()
                {
                    Error = "Transactions pending, please try again after 1 minute.", Description = ex.Message
                }));
            }
            watch.Stop();
            var elapsedMs = watch.ElapsedMilliseconds;

            return(new ObjectResult(new
            {
                tx = txid,
                isInstantPay = isInstantPay,
                Execution = elapsedMs
            }));
        }
 public JsonResult TestAPIAuthentication(GenericRequestModel request)
 {
     return(Json(request, JsonRequestBehavior.DenyGet));
 }
 public JsonResult GetUserNavigationStructure(GenericRequestModel request)
 {
     return(Json(NavigationLogic.GetUserNavigationStructure(request), JsonRequestBehavior.DenyGet));
 }
Esempio n. 24
0
 /// <inheritdoc />
 public bool RemoveItems(GenericRequestModel grm) =>
 BulkExecute(grm.Items.Select(item =>
                              $"DELETE FROM ShoppingCart_LinkTable WHERE UserId = {grm.CurrentUser.Id} AND ItemId = {item.Id}")
             .ToList());
Esempio n. 25
0
 /// <inheritdoc />
 public bool AddItems(GenericRequestModel grm) =>
 _vreader.AddItems(grm);
Esempio n. 26
0
 public JsonResult CheckAuthentication(GenericRequestModel request)
 {
     return(new JsonNetResult(new GenericResultModel(), JsonRequestBehavior.DenyGet));
 }