Ejemplo n.º 1
0
        public ResponseModel AuthenticateAsync([FromBody] UserDto userDto)
        {
            using (var db = new MiraclesContext())
            {
                var user = db.TblUser.Where(o => o.UserName == userDto.Username && o.Password == userDto.Password).FirstOrDefault();
                if (user != null)
                {
                    var tokenHandler = new JwtSecurityTokenHandler();

                    var tokenDescriptor = new SecurityTokenDescriptor
                    {
                        Subject = new ClaimsIdentity(new Claim[]
                        {
                            new Claim(ClaimTypes.NameIdentifier, user.UserName.ToString())
                        }),
                        Expires = DateTime.UtcNow.AddDays(7000),
                    };
                    var token       = tokenHandler.CreateToken(tokenDescriptor);
                    var tokenString = tokenHandler.WriteToken(token);
                    user.Token = tokenString;
                    db.SaveChanges();
                    return(new ResponseModel()
                    {
                        Status = 200,
                        Data = tokenString,
                        Message = "Login successfully"
                    });
                }
            }
            return(new ResponseModel()
            {
                Status = 400,
                Message = "Login failed"
            });
        }
Ejemplo n.º 2
0
        public ResponseModel InsertUser([FromBody] UserDto _userDto)
        {
            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = "Company account was created."
            };

            try
            {
                using (var db = new MiraclesContext())
                {
                    db.TblUser.Add(new TblUser
                    {
                        UserName = _userDto.Username,
                        Password = _userDto.Password,
                    });

                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = "error: " + ex.Message;
            }

            return(rs);
        }
Ejemplo n.º 3
0
 public Setting Get()
 {
     using (var db = new MiraclesContext())
     {
         var rs = db.Setting.FirstOrDefault();
         return(rs);
     }
 }
 private long GetMiraclesID(long shopifyID)
 {
     using (var db = new MiraclesContext())
     {
         var product = db.MappingOrder.FirstOrDefault(o => o.ShopifyId == shopifyID);
         if (product != null)
         {
             return(product.MiraclesId);
         }
         return(0);
     }
 }
        public async Task <ResponseModel> PostData([FromBody] CompanyDto companyDto)
        {
            var json = JsonConvert.SerializeObject(companyDto);
            var data = new StringContent(json, Encoding.UTF8, "application/json");
            var url  = "http://staging.miraclecbdproducts.com/api/company/";
            var rs   = new ResponseModel()
            {
                Status  = 200,
                Message = "Company account was created."
            };

            try
            {
                using (var db = new MiraclesContext())
                {
                    using (var client = new HttpClient())
                    {
                        HttpResponseMessage response = await client.PostAsync(url, data);

                        if (!response.IsSuccessStatusCode)
                        {
                            rs.Status  = 400;
                            rs.Data    = "";
                            rs.Message = "";
                            return(rs);
                        }
                        else
                        {
                            db.TblMcompany.Add(new TblMcompany
                            {
                                ContactPerson   = companyDto.contact_person.Trim(),
                                Name            = companyDto.name.Trim(),
                                PhoneNumber     = companyDto.phone_number.Trim(),
                                EmailAddress    = companyDto.email_address.Trim(),
                                Username        = companyDto.username.Trim(),
                                Password        = companyDto.password.Trim(),
                                CurrentPassword = companyDto.password.Trim(),
                                ShopUrl         = companyDto.shop_url.Trim()
                            });
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = "Error" + ex.Message;
            }
            return(rs);
        }
Ejemplo n.º 6
0
        public async Task <ResponseModel> AutoAsyncMiraclesProduct()
        {
            using (var db = new MiraclesContext())
            {
                try

                {
                    var check = db.Setting.Select(o => o.AutoSyncProduct).FirstOrDefault();
                    if (check != true)
                    {
                        return(null);
                    }

                    await GetMiraclesProductAsync();

                    db.TblAuditLog.Add(new TblAuditLog
                    {
                        CreatedAt = DateTime.UtcNow,
                        Message   = "Auto sync is completed."
                    });
                    db.SaveChanges();
                    return(new ResponseModel
                    {
                        Status = 200,
                        Message = "Auto sync is completed."
                    });
                }

                catch (Exception ex)
                {
                    var message = "Auto sync is failed. Message: " + ex.Message + ". Trace: " + ex.StackTrace;
                    db.TblAuditLog.Add(new TblAuditLog
                    {
                        CreatedAt = DateTime.UtcNow,
                        Message   = message
                    });
                    db.SaveChanges();
                    return(new ResponseModel
                    {
                        Status = 200,
                        Message = message
                    });
                }
            }
        }
 public TblMcompany GetCompanyProfile(string shopurl)
 {
     using (var db = new MiraclesContext())
     {
         var result = db.TblMcompany.Where(o => o.ShopUrl == shopurl).FirstOrDefault();
         return(new TblMcompany()
         {
             Id = result.Id,
             ContactPerson = result.ContactPerson.Trim(),
             Name = result.Name.Trim(),
             PhoneNumber = result.PhoneNumber,
             EmailAddress = result.EmailAddress.Trim(),
             Username = result.Username.Trim(),
             Password = result.Password.Trim(),
             CurrentPassword = result.CurrentPassword.Trim(),
             ShopUrl = result.ShopUrl.Trim()
         });
     }
 }
Ejemplo n.º 8
0
        public async Task <ResponseModel> UpdateProduct(int id, [FromBody] ProductDto productDto)
        {
            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = "Product was updated."
            };

            try
            {
                using (var db = new MiraclesContext())
                {
                    var myShopifyUrl       = _config.GetValue <string>("Shopify:Url");
                    var privateAppPassword = _config.GetValue <string>("Shopify:PrivateAppPassword");
                    var service            = new ProductService(myShopifyUrl, privateAppPassword);
                    var item = db.MappingOrder.FirstOrDefault(o => o.MiraclesId == id);

                    if (item == null)
                    {
                        rs.Status  = 400;
                        rs.Message = "Dont have Product you want to update.";
                        return(rs);
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = "error: " + ex.Message;
            }

            return(rs);
        }
Ejemplo n.º 9
0
        public ResponseModel Post([FromBody] Setting _setting)
        {
            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = string.Empty
            };

            try
            {
                var db = new MiraclesContext();
                {
                    var setting = db.Setting.FirstOrDefault();
                    if (setting != null)
                    {
                        setting.AutoSyncProduct = _setting.AutoSyncProduct;
                    }
                    else
                    {
                        setting = new Setting()
                        {
                            AutoSyncProduct = _setting.AutoSyncProduct
                        };
                        db.Setting.Add(setting);
                    }
                    db.SaveChanges();
                    rs.Data = setting;
                }
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = ex.Message;
            }
            return(rs);
        }
        public async void SyncOrderAsync(Order shopifyorder)
        {
            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = string.Empty
            };

            using (var httpClient = new HttpClient())
            {
                var url      = _config.GetValue <string>("miraclecbdproducts:Url");
                var username = _config.GetValue <string>("miraclecbdproducts:username");
                var password = _config.GetValue <string>("miraclecbdproducts:password");
                var order    = new OrderModel
                {
                    username = username,
                    password = password
                };
                try
                {
                    var client = new HttpClient
                    {
                        BaseAddress = new Uri(url)
                    };
                    var phone = !string.IsNullOrEmpty(shopifyorder.Phone) ? shopifyorder.Phone : "0123456789";
                    if (shopifyorder.BillingAddress != null)
                    {
                        var address2 = !string.IsNullOrEmpty(shopifyorder.BillingAddress.Address2) ? shopifyorder.BillingAddress.Address2 : shopifyorder.BillingAddress.Address1;
                        order.billing_address_first_name = shopifyorder.BillingAddress.FirstName;
                        order.billing_address_last_name  = shopifyorder.BillingAddress.LastName;
                        order.billing_address_address1   = shopifyorder.BillingAddress.Address1;
                        order.billing_address_address2   = address2;
                        order.billing_address_city       = shopifyorder.BillingAddress.City;
                        order.billing_address_zip_code   = shopifyorder.BillingAddress.Zip;
                        order.billing_address_state      = shopifyorder.BillingAddress.Province;
                        order.billing_address_email      = shopifyorder.Email;
                        order.billing_address_phone      = phone;
                    }
                    else
                    {
                        order.billing_address_first_name = "John";
                        order.billing_address_last_name  = "Doe";
                        order.billing_address_address1   = "123 Billing Street";
                        order.billing_address_address2   = "123 Billing Street";
                        order.billing_address_city       = "Billtown";
                        order.billing_address_zip_code   = "K2P0B0";
                        order.billing_address_state      = "Kentucky";
                        order.billing_address_email      = "*****@*****.**";
                        order.billing_address_phone      = "0123456789";
                    }
                    if (shopifyorder.ShippingAddress != null)
                    {
                        var address2 = !string.IsNullOrEmpty(shopifyorder.ShippingAddress.Address2) ? shopifyorder.ShippingAddress.Address2 : shopifyorder.ShippingAddress.Address1;
                        order.shipping_address_first_name = shopifyorder.ShippingAddress.FirstName;
                        order.shipping_address_last_name  = shopifyorder.ShippingAddress.LastName;
                        order.shipping_address_address1   = shopifyorder.ShippingAddress.Address1;
                        order.shipping_address_address2   = address2;
                        order.shipping_address_city       = shopifyorder.ShippingAddress.City;
                        order.shipping_address_zip_code   = shopifyorder.ShippingAddress.Zip;
                        order.shipping_address_state      = shopifyorder.ShippingAddress.Province;
                        order.shipping_address_email      = shopifyorder.Email;
                        order.shipping_address_phone      = phone;
                    }
                    else
                    {
                        order.shipping_address_first_name = "John";
                        order.shipping_address_last_name  = "Doe";
                        order.shipping_address_address1   = "123 shipping Street";
                        order.shipping_address_address2   = "123 shipping Street";
                        order.shipping_address_city       = "Billtown";
                        order.shipping_address_zip_code   = "K2P0B0";
                        order.shipping_address_state      = "Kentucky";
                        order.shipping_address_email      = "*****@*****.**";
                        order.shipping_address_phone      = "0123456789";
                    }
                    order.ip_address = "192.168.0.1";
                    order.products   = new List <ProductModel>();
                    foreach (var product in shopifyorder.LineItems)
                    {
                        var miraclesID = GetMiraclesID(product.ProductId.Value);
                        if (miraclesID != 0)
                        {
                            order.products.Add(new ProductModel
                            {
                                id       = miraclesID,
                                quantity = product.Quantity
                            });
                        }
                    }
                    if (order.products.Count() == 0)
                    {
                        rs.Status  = 500;
                        rs.Message = "Order does not have any product";
                    }
                    else
                    {
                        var miraclesData = JsonConvert.SerializeObject(order);
                        var content      = new StringContent(miraclesData, Encoding.UTF8, "application/json");
                        var response     = client.PostAsync(url, content).Result;
                        rs.Status = (int)response.StatusCode;
                    }
                    rs.Data = order;
                }
                catch (Exception ex)
                {
                    rs.Status  = 500;
                    rs.Message = ex.Message;
                }
                using (var db = new MiraclesContext())
                {
                    var inputData    = JsonConvert.SerializeObject(shopifyorder);
                    var miraclesData = JsonConvert.SerializeObject(order);
                    var message      = "Status: " + rs.Status + "; Message: " + rs.Message;
                    if (rs.Status != 200)
                    {
                        message += "; Input Data: " + inputData;
                        message += "; Miracles Data: " + miraclesData;
                        message += "; Miracles URL: " + url;
                    }
                    db.TblAuditLog.Add(new TblAuditLog()
                    {
                        CreatedAt = DateTime.UtcNow,
                        Message   = message
                    });
                    db.SaveChanges();
                }
            }
        }
        public static async Task <ResponseModel> AddProduct(Product product, string myShopifyUrl, string privateAppPassword)
        {
            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = string.Empty
            };

            try
            {
                using (var db = new MiraclesContext())
                {
                    var service = new ProductService(myShopifyUrl, privateAppPassword);
                    if (!product.Id.HasValue)
                    {
                        rs.Status  = 500;
                        rs.Message = "Product ID is required";
                        return(rs);
                    }
                    if (string.IsNullOrEmpty(product.Title))
                    {
                        rs.Status  = 500;
                        rs.Message = "Title is required";
                        return(rs);
                    }
                    long miraclesID     = product.Id.Value;
                    var  item           = db.MappingOrder.FirstOrDefault(o => o.MiraclesId == miraclesID);
                    var  shopifyProduct = new Product();

                    if (item != null)
                    {
                        shopifyProduct = await service.UpdateAsync(item.ShopifyId, product);
                    }
                    else
                    {
                        shopifyProduct = await service.CreateAsync(product);
                    }

                    if (!shopifyProduct.Id.HasValue)
                    {
                        rs.Status  = 500;
                        rs.Message = "Can not detect product ID from Shopify. Value: " + shopifyProduct.Id;
                        return(rs);
                    }

                    var shopifyID = shopifyProduct.Id.Value;
                    if (item == null)
                    {
                        db.MappingOrder.Add(new MappingOrder()
                        {
                            MiraclesId = miraclesID,
                            ShopifyId  = shopifyID
                        });
                    }
                    db.SaveChanges();
                }
                rs.Data = product;
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = ex.Message;
            }
            return(rs);
        }
        public async Task <ResponseModel> UpdateCompany(string username, [FromBody] CompanyDto _companyDto)
        {
            var json = JsonConvert.SerializeObject(_companyDto);
            var data = new StringContent(json, Encoding.UTF8, "application/json");
            var url  = "http://staging.miraclecbdproducts.com/api/company/";

            var rs = new ResponseModel()
            {
                Status  = 200,
                Message = "Company account was updated."
            };

            try
            {
                using (var db = new MiraclesContext())
                {
                    using (var client = new HttpClient())
                    {
                        HttpResponseMessage response = await client.PatchAsync(url, data);

                        if (!response.IsSuccessStatusCode)
                        {
                            rs.Status  = 400;
                            rs.Data    = "";
                            rs.Message = "";
                            return(rs);
                        }
                        else
                        {
                            var item = db.TblMcompany.Where(o => o.Username == username).FirstOrDefault();
                            if (item != null)
                            {
                                if (_companyDto.contact_person != null)
                                {
                                    item.ContactPerson = _companyDto.contact_person.Trim();
                                }
                                if (_companyDto.name != null)
                                {
                                    item.Name = _companyDto.name.Trim();
                                }
                                if (_companyDto.phone_number != null)
                                {
                                    item.PhoneNumber = _companyDto.phone_number.Trim();
                                }
                                if (_companyDto.email_address != null)
                                {
                                    item.EmailAddress = _companyDto.email_address.Trim();
                                }
                                if (_companyDto.confirm_new_password != null)
                                {
                                    item.Password        = _companyDto.confirm_new_password.Trim();
                                    item.CurrentPassword = _companyDto.confirm_new_password.Trim();
                                }
                                if (_companyDto.shop_url != null)
                                {
                                    item.ShopUrl = _companyDto.shop_url.Trim();
                                }
                            }
                            db.SaveChanges();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                rs.Status  = 500;
                rs.Message = "Error" + ex.Message;
            }
            return(rs);
        }
Ejemplo n.º 13
0
        public ResponseModel ImportScanData(ImportDataModel postData)
        {
            var res = new ResponseModel()
            {
                Status  = "201",
                Message = "",
            };

            // check role, login info.
            using (var db = new MiraclesContext())
            {
                var user = db.TblUsers.FirstOrDefault(o => o.UserName == postData.User);
                #region Validate
                if (user == null)
                {
                    res.Message = "Account with user name " + postData.User + " is not existed";
                    res.Status  = "500";
                    return(res);
                }
                if (user.Token != postData.Token)
                {
                    res.Message = "Token is not correct";
                    res.Status  = "500";
                    return(res);
                }
                if (user.RoleId != Constant.Users.Admin && user.RoleId != Constant.Users.User && user.RoleId != Constant.Users.Superadmin)
                {
                    res.Message = "You dont have permission to do.";
                    res.Status  = "500";
                    return(res);
                }
                #endregion
                try
                {
                    Guid g;
                    g = Guid.NewGuid();
                    var x = new TblScanData
                    {
                        ScanId      = g.ToString(),
                        Uid         = user.Id,
                        CreatedOn   = DateTime.UtcNow,
                        StationName = postData.StationName,
                        Payload     = postData.ScanData.Payload,
                        DataType    = postData.ScanData.DataType,
                        FileName    = postData.ScanData.FileName,
                        Status      = postData.ScanData.Status,
                        DeletedOn   = null,
                    };
                    db.TblScanData.Add(x);
                    db.SaveChanges();
                    x.U         = null;
                    res.Message = "Scan data is created";
                    //res.Data = x;
                }
                catch (Exception ex)
                {
                    res.Status  = "500";
                    res.Message = ex.Message;
                }
            }
            return(res);
        }