Esempio n. 1
0
        private static void AttachOrderMaster(SeedDataAccess seedDataAccess, string email, List <Seed> seedList)
        {
            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > preSaveAction = (d1, d2, l) =>
            {
                string maxOrderNo = seedDataAccess.ExecuteScalarAsString(SqlResource.GetMaxOrderNumber);
                int    maxNo      = int.Parse(maxOrderNo);
                d1["OrderNo"] = maxNo + 1;
            };

            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > postSaveAction = (d1, d2, l) =>
            {
                var value = d1["OrderNo"];
                List <SqlParameter> parms = new List <SqlParameter>();
                parms.Add(new SqlParameter("value", value));
                seedDataAccess.ExecuteScalar(SqlResource.SetMaxOrderNumber, parms);
            };

            dynamic orderMaster = new ExpandoObject();

            orderMaster.UserId = GetUserIdFromEmail(seedDataAccess, email);
            Seed seed = new Seed()
            {
                TableName           = "OrderMaster",
                TableDict           = SeedUtil.GetDictFromDynamicObject(orderMaster),
                PKeyColName         = "Id",
                IsCustomIDGenerated = false,
                PKeyTagName         = "order",
                PreSaveAction       = preSaveAction,
                PostSaveAction      = postSaveAction
            };

            seedList.Add(seed);
        }
        public async Task <object> InsertCreditCardAsync(dynamic obj)
        {
            dynamic       result = new ExpandoObject();
            Task <object> t      = Task.Run <object>(() =>
            {
                try
                {
                    IDictionary <string, object> objDictionary = (IDictionary <string, object>)obj;

                    if (objDictionary.ContainsKey("card") && (objDictionary.ContainsKey("email")))
                    {
                        string email         = objDictionary["email"].ToString();
                        dynamic card         = objDictionary["card"];
                        List <Seed> seedList = new List <Seed>();

                        IDictionary <string, object> dict = SeedUtil.GetDictFromDynamicObject(card);
                        dict["userId"] = Util.GetUserIdFromEmail(seedDataAccess, email);
                        dict.Remove("isNew");
                        Seed seed = new Seed()
                        {
                            PKeyColName         = "Id",
                            PKeyTagName         = "Card",
                            IsCustomIDGenerated = false,
                            TableName           = "CreditCards",
                            TableDict           = dict
                        };
                        object id = null;
                        Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > action = (d1, d2, s) =>
                        {
                            id = d2["Card"];
                        };
                        seed.PostSaveAction = action;
                        seedList.Add(seed);

                        seedDataAccess.SaveSeeds(seedList);
                        result.status  = 200;
                        result.success = true;
                        result.id      = id;
                    }
                    else
                    {
                        Util.SetError(result, 406, Resources.ErrInputDataWrong, Resources.ErrInputDataWrong);
                    }
                }
                catch (Exception ex)
                {
                    result = new ExpandoObject();
                    Util.SetError(result, 500, Resources.ErrInternalServerError, ex.Message);
                }
                return(result);
            });

            result = await t;
            return(result);
        }
Esempio n. 3
0
        private static void AddUser()
        {
            var            connString     = "server=(local);Database=KistlerDB;Integrated Security=SSPI";
            SeedDataAccess seedDataAccess = new SeedDataAccess(connString);
            dynamic        user           = new ExpandoObject();
            var            email          = "*****@*****.**";
            var            hash           = "abcd";

            user.Email   = email;
            user.PwdHash = hash;
            user.Role    = "U";
            var kvUser = new KVUser()
            {
                Email   = email,
                PwdHash = hash,
                Role    = 'U'
            };
            Dictionary <string, object> kvUserDict = SeedUtil.GetDictFromObject(kvUser);
            Dictionary <string, object> userDict   = SeedUtil.GetDictFromDynamicObject(user);
            var seed = new Seed()
            {
                TableName = "UserMaster",
                TableDict = userDict,
                //TableObject = "user",
                IsCustomIDGenerated = false,
                PKeyColName         = "Id"
            };
            List <Seed> seedList = new List <Seed>();

            seedList.Add(seed);
            try
            {
                seedDataAccess.SaveSeeds(seedList);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Esempio n. 4
0
        private static void AttachOrderDetails(dynamic order, List <Seed> seedList)
        {
            object[]       orders    = (object[])order;
            List <dynamic> orderList = orders.ToList();
            KeyValuePair <string, string>         kvDetails     = new KeyValuePair <string, string>("OrderId", "order");
            List <KeyValuePair <string, string> > kvListDetails = new List <KeyValuePair <string, string> >();

            kvListDetails.Add(kvDetails);

            orderList.ForEach(x =>
            {
                //x.OfferId = x.Id;
                //x.Id = null;
                Seed seed = new Seed()
                {
                    PKeyColName                     = "Id",
                    TableName                       = "OrderDetails",
                    TableDict                       = SeedUtil.GetDictFromDynamicObject(x),
                    IsCustomIDGenerated             = false,
                    DetailsTableColNameTagNamePairs = kvListDetails
                };
                seedList.Add(seed);
            });
        }
Esempio n. 5
0
        public static List <Seed> GetApproveRequestSeedList(SeedDataAccess seedDataAccess, dynamic objDictionary)
        {
            List <Seed> seedList = new List <Seed>();

            JObject jObjDict        = JObject.FromObject(objDictionary);
            JToken  jBundle         = jObjDict.SelectToken("orderBundle");
            JToken  orderMaster     = jBundle.SelectToken("orderMaster");
            JToken  orderDetails    = jBundle.SelectToken("orderDetails");
            JToken  orderImpDetails = jBundle.SelectToken("orderImpDetails");
            JToken  newCard         = jBundle.SelectToken("newCard");
            var     userId          = jObjDict.GetValue("userId").ToString();

            #region OrderMaster

            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > preSaveAction = (d1, d2, l) =>
            {
                string maxOrderNo = seedDataAccess.ExecuteScalarAsString(SqlResource.GetMaxOrderNumber);
                int    maxNo      = int.Parse(maxOrderNo);
                d1["OrderNo"] = maxNo + 1;
            };

            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > postSaveAction = (d1, d2, l) =>
            {
                var value = d1["OrderNo"];
                List <SqlParameter> parms = new List <SqlParameter>();
                parms.Add(new SqlParameter("value", value));
                seedDataAccess.ExecuteScalar(SqlResource.SetMaxOrderNumber, parms);
            };

            dynamic orderMasterObject = orderMaster.ToObject <dynamic>();
            orderMasterObject.OrderNo = "1";
            IDictionary <string, object> orderMasterDict = SeedUtil.GetDictFromDynamicObject(orderMasterObject);
            var seed = new Seed()
            {
                TableName           = "OrderMaster",
                TableDict           = orderMasterDict,
                IsCustomIDGenerated = false,
                PKeyColName         = "Id",
                PKeyTagName         = "order",
                PreSaveAction       = preSaveAction,
                PostSaveAction      = postSaveAction
            };
            seedList.Add(seed);
            #endregion

            #region OrderDetails
            List <dynamic> orderDetailsList = orderDetails.ToList <dynamic>();

            KeyValuePair <string, string>         kvDetails     = new KeyValuePair <string, string>("OrderId", "order");
            List <KeyValuePair <string, string> > kvListDetails = new List <KeyValuePair <string, string> >();
            kvListDetails.Add(kvDetails);

            orderDetailsList.ForEach(x =>
            {
                var seedOrderDetails = new Seed()
                {
                    PKeyColName                     = "Id",
                    TableName                       = "OrderDetails",
                    TableDict                       = SeedUtil.GetDictFromDynamicObject(x),
                    IsCustomIDGenerated             = false,
                    DetailsTableColNameTagNamePairs = kvListDetails
                };
                seedList.Add(seedOrderDetails);
            });
            #endregion

            #region OrderImpDetails
            KeyValuePair <string, string>         kvImpDetails     = new KeyValuePair <string, string>("OrderId", "order");
            List <KeyValuePair <string, string> > kvImpListDetails = new List <KeyValuePair <string, string> >();
            kvImpListDetails.Add(kvImpDetails);

            object orderImpDetailsId = null;
            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > postSaveActionOrderImpDetails = (d1, d2, l) =>
            {
                orderImpDetailsId = d2["orderImpDetails"];
            };


            var seedOrderImpDetails = new Seed()
            {
                PKeyColName                     = "Id",
                TableName                       = "OrderImpDetails",
                TableDict                       = SeedUtil.GetDictFromDynamicObject(orderImpDetails),
                IsCustomIDGenerated             = false,
                DetailsTableColNameTagNamePairs = kvImpListDetails,
                PostSaveAction                  = postSaveActionOrderImpDetails,
                PKeyTagName                     = "orderImpDetails",
            };
            seedList.Add(seedOrderImpDetails);
            #endregion

            if (newCard != null) //save new card in PaymentMethods table and store new cardId in orderImpDetails
            {
                var tableDict = SeedUtil.GetDictFromDynamicObject(newCard);
                tableDict.Remove("isSaveForLaterUse");
                tableDict["userId"]    = userId;
                tableDict["isDefault"] = true;

                Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > preSaveActionNewCard = (d1, d2, l) =>
                {
                    List <SqlParameter> parms = new List <SqlParameter>();
                    parms.Add(new SqlParameter("userId", userId));
                    seedDataAccess.ExecuteScalar(SqlResource.PaymentMethodsResetDefault, parms);
                };

                Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > postSaveActionNewCard = (d1, d2, l) =>
                {
                    var cardId = d2["card"];

                    List <SqlParameter> parms = new List <SqlParameter>();
                    parms.Add(new SqlParameter("cardId", cardId));
                    parms.Add(new SqlParameter("orderImpDetailsId", orderImpDetailsId));
                    seedDataAccess.ExecuteScalar(SqlResource.UpdateCardIdInOrderImpDetails, parms);
                };

                var seedNewCard = new Seed()
                {
                    PKeyColName         = "Id",
                    TableName           = "PaymentMethods",
                    TableDict           = tableDict,
                    IsCustomIDGenerated = false,
                    PostSaveAction      = postSaveActionNewCard,
                    PreSaveAction       = preSaveActionNewCard,
                    PKeyTagName         = "card",
                };
                seedList.Add(seedNewCard);
            }

            return(seedList);
        }
Esempio n. 6
0
        private static void SaveOrder()
        {
            var            connString     = "server=(local);Database=KistlerDB;Integrated Security=SSPI";
            SeedDataAccess seedDataAccess = new SeedDataAccess(connString);

            var orderMaster  = GetOrderMasterData();
            var orderDetails = GetOrderDetailsData();

            List <Seed> seedList = new List <Seed>();
            //KeyValuePair<string, string> kvMaster = new KeyValuePair<string, string>("Id","OrderId");
            //List<KeyValuePair<string, string>> kvListMaster = new List<KeyValuePair<string, string>>();
            //kvListMaster.Add(kvMaster);

            KeyValuePair <string, string>         kvDetails     = new KeyValuePair <string, string>("OrderId", "order");
            List <KeyValuePair <string, string> > kvListDetails = new List <KeyValuePair <string, string> >();

            kvListDetails.Add(kvDetails);
            var getMaxOrderNumberSql = "select max(IntValue) from Setup where MKey = 'MaxOrderNumber'";
            var setMaxOrderNumberSql = "update Setup set IntValue = @value where MKey = 'MaxOrderNumber'";
            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > preSaveAction = (d1, d2, l) =>
            {
                string maxOrderNo = seedDataAccess.ExecuteScalarAsString(getMaxOrderNumberSql);
                int    maxNo      = int.Parse(maxOrderNo);
                d1["OrderNo"] = maxNo + 1;
            };

            Action <Dictionary <string, object>, Dictionary <string, object>, List <Seed> > postSaveAction = (d1, d2, l) =>
            {
                var value = d1["OrderNo"];
                List <SqlParameter> parms = new List <SqlParameter>();
                parms.Add(new SqlParameter("value", value));
                seedDataAccess.ExecuteScalar(setMaxOrderNumberSql, parms);
            };

            Seed orderMasterSeed = new Seed()
            {
                TableName           = "OrderMaster",
                TableDict           = SeedUtil.GetDictFromDynamicObject(orderMaster),
                PKeyColName         = "Id",
                IsCustomIDGenerated = false,
                PKeyTagName         = "order",
                PreSaveAction       = preSaveAction,
                PostSaveAction      = postSaveAction
            };

            seedList.Add(orderMasterSeed);

            orderDetails.ForEach(x =>
            {
                Seed details = new Seed()
                {
                    PKeyColName                     = "Id",
                    TableName                       = "OrderDetails",
                    TableDict                       = SeedUtil.GetDictFromDynamicObject(x),
                    IsCustomIDGenerated             = false,
                    DetailsTableColNameTagNamePairs = kvListDetails
                };
                seedList.Add(details);
            });

            seedDataAccess.SaveSeeds(seedList);
        }
        public async Task <object> UpdateOrInsertAddressesAsync(dynamic obj)
        {
            dynamic       result = new ExpandoObject();
            Task <object> t      = Task.Run <object>(() =>
            {
                try
                {
                    IDictionary <string, object> objDictionary = (IDictionary <string, object>)obj;

                    if (objDictionary.ContainsKey("addresses") && (objDictionary.ContainsKey("email")))
                    {
                        string email      = objDictionary["email"].ToString();
                        dynamic addresses = objDictionary["addresses"];
                        foreach (var address in addresses)
                        {
                            IDictionary <string, object> dict = SeedUtil.GetDictFromDynamicObject(address);
                            if (dict.ContainsKey("id"))
                            {
                                List <SqlParameter> parms = new List <SqlParameter>();
                                parms.Add(new SqlParameter("address1", address.address1));
                                parms.Add(new SqlParameter("zip", address.zip));
                                parms.Add(new SqlParameter("city", address.city));
                                parms.Add(new SqlParameter("street", address.street));
                                parms.Add(new SqlParameter("isDefault", address.isDefault));
                                parms.Add(new SqlParameter("id", address.id));
                                var i = seedDataAccess.ExecuteNonQuery(SqlResource.UpdateAddress, parms);
                                if (i == 0)
                                {
                                    Exception exception = new Exception();
                                    exception.Data.Add("501", Resources.ErrUpdateError);
                                    throw exception;
                                }
                            }
                            else
                            {
                                dict["userId"] = Util.GetUserIdFromEmail(seedDataAccess, email);
                                dict.Remove("isEdit");
                                dict.Remove("isDirty");
                                dict.Remove("isNew");
                                List <Seed> saveProfileSeedList = new List <Seed>();
                                Seed seed = new Seed()
                                {
                                    PKeyColName         = "Id",
                                    IsCustomIDGenerated = false,
                                    TableName           = "ShippingAddresses",
                                    TableDict           = dict
                                };
                                saveProfileSeedList.Add(seed);
                                seedDataAccess.SaveSeeds(saveProfileSeedList);
                            }
                        }
                        result.status  = 200;
                        result.success = true;
                    }
                    else
                    {
                        Util.SetError(result, 406, Resources.ErrInputDataWrong, Resources.ErrInputDataWrong);
                    }
                }
                catch (Exception ex)
                {
                    result = new ExpandoObject();
                    Util.SetError(result, 520, Resources.ErrGenericError, ex.Message);
                }
                return(result);
            });

            result = await t;
            return(result);
        }
        public async Task <object> UpdateOrInsertProfileAsync(dynamic obj)
        {
            dynamic       result = new ExpandoObject();
            Task <object> t      = Task.Run <object>(() =>
            {
                try
                {
                    IDictionary <string, object> objDictionary = (IDictionary <string, object>)obj;

                    if (objDictionary.ContainsKey("profile") && (objDictionary.ContainsKey("email")))
                    {
                        string email    = objDictionary["email"].ToString();
                        dynamic profile = objDictionary["profile"];
                        bool isUpdate   = (bool)objDictionary["isUpdate"];
                        if (isUpdate)
                        {
                            List <SqlParameter> parms = new List <SqlParameter>();
                            parms.Add(new SqlParameter("firstName", profile.firstName));
                            parms.Add(new SqlParameter("lastName", profile.lastName));
                            parms.Add(new SqlParameter("phone", profile.phone));
                            parms.Add(new SqlParameter("birthDay", profile.birthDay));
                            parms.Add(new SqlParameter("mailingAddress1", profile.mailingAddress1));
                            parms.Add(new SqlParameter("mailingAddress2", profile.mailingAddress2));
                            parms.Add(new SqlParameter("mailingCity", profile.mailingCity));
                            parms.Add(new SqlParameter("mailingState", profile.mailingState));
                            parms.Add(new SqlParameter("mailingZip", profile.mailingZip));
                            parms.Add(new SqlParameter("id", profile.id));
                            var i = seedDataAccess.ExecuteNonQuery(SqlResource.UpdateProfile, parms);
                            if (i == 0)
                            {
                                Exception exception = new Exception();
                                exception.Data.Add("501", Resources.ErrUpdateError);
                                throw exception;
                            }
                        }
                        else
                        {
                            profile.UserId = Util.GetUserIdFromEmail(seedDataAccess, email);
                            List <Seed> saveProfileSeedList = new List <Seed>();
                            Seed seed = new Seed()
                            {
                                PKeyColName         = "Id",
                                IsCustomIDGenerated = false,
                                TableName           = "UserProfiles",
                                TableDict           = SeedUtil.GetDictFromDynamicObject(profile)
                            };
                            saveProfileSeedList.Add(seed);
                            seedDataAccess.SaveSeeds(saveProfileSeedList);
                        }
                        result.status  = 200;
                        result.success = true;
                    }
                    else
                    {
                        Util.SetError(result, 406, Resources.ErrInputDataWrong, Resources.ErrInputDataWrong);
                    }
                }
                catch (Exception ex)
                {
                    result = new ExpandoObject();
                    if (ex.Data.Keys.Count > 0)
                    {
                        var entryList = ex.Data.Cast <DictionaryEntry>();
                        int errorNo   = 0;
                        int.TryParse(entryList.ElementAt(0).Key.ToString(), out errorNo);
                        if (errorNo == 0)
                        {
                            errorNo = 520;
                        }
                        //int errorNo = int.Parse(entryList.ElementAt(0).Key.ToString());
                        string errorMessage = entryList.ElementAt(0).Value.ToString();
                        Util.SetError(result, errorNo, errorMessage, errorMessage);
                    }
                    else
                    {
                        Util.SetError(result, 500, Resources.ErrInternalServerError, ex.Message);
                    }
                }
                return(result);
            });

            result = await t;
            return(result);
        }