示例#1
0
 //add membership
 public Customer AddCustomer(Customer customer)
 {
     try
     {
         customer.Code      = Guid.NewGuid().ToString();
         customer.Member_Id = _context.Customer.Where(x => x.Is_Member == true && x.Member_Id != null).Select(x => x.Member_Id).DefaultIfEmpty(0).Max() + 1;
         Store store = JsonConvert.DeserializeObject <Store>(HttpContext.Session.GetString("Store"));
         customer.Membership_Number   = store.INITIAL + "-" + Convert.ToInt32(customer.Member_Id).ToString("000000");
         customer.Created_By          = User.Identity.Name;
         customer.Registration_Date   = DateTime.Now;
         customer.MembershipDiscGroup = "CATEGORY D";
         customer.CustomerPriceGroup  = "RSP";
         customer.CustomerDiscGroup   = "RSP";
         _context.Add(customer);
         _context.SaveChanges();
         NavPostData navPost = new NavPostData(_context, _mapper);
         BackgroundJob.Enqueue(() => navPost.PostCustomer());
         return(customer);
     }
     catch (Exception ex)
     {
         if (ex.InnerException.Message.Contains("idx_unique_member_id"))
         {
             return(AddCustomer(customer));
         }
         else
         {
             return(new Customer());
         }
     }
 }
示例#2
0
        public IActionResult PostCustomerToNAV()
        {
            NavPostData sync = new NavPostData(_context, _mapper);

            BackgroundJob.Enqueue(() => sync.PostCustomer());
            var data = new
            {
                Status  = 200,
                Message = "Success"
            };

            return(Ok(data));
        }
示例#3
0
        public IActionResult PostUnSyncInvoiceToNav()
        {
            NavPostData sync  = new NavPostData(_context, _mapper);
            Store       store = JsonConvert.DeserializeObject <Store>(HttpContext.Session.GetString("Store"));

            //sync.PostSalesInvoice(store);
            //sync.PostSalesInvoice(store);
            BackgroundJob.Enqueue(() => sync.PostCustomer());
            BackgroundJob.Enqueue(() => sync.PostUnSyncInvoie(store));
            // BackgroundJob.Enqueue(() => Console.WriteLine("test from background"));
            var data = new
            {
                Status  = 200,
                Message = "Success"
            };

            return(Ok(data));
        }
示例#4
0
        public IActionResult CreateMembership([FromBody] Customer customer)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    customer.Code      = Guid.NewGuid().ToString();
                    customer.Is_Member = true;
                    customer.Member_Id = _context.Customer.Where(x => x.Is_Member == true && x.Member_Id != null).Select(x => x.Member_Id).DefaultIfEmpty(0).Max() + 1;
                    Store store = JsonConvert.DeserializeObject <Store>(HttpContext.Session.GetString("Store"));
                    customer.Membership_Number = store.INITIAL + "-" + Convert.ToInt32(customer.Member_Id).ToString("000000");
                    //check number series already
                    Customer isCustomerExist = _context.Customer.FirstOrDefault(x => x.Membership_Number == customer.Membership_Number);
                    if (isCustomerExist != null)
                    {
                        if (isCustomerExist.Member_Id != customer.Member_Id)
                        {
                            isCustomerExist.Member_Id             = customer.Member_Id;
                            _context.Entry(isCustomerExist).State = EntityState.Modified;
                            _context.SaveChanges();
                        }
                        return(CreateMembership(customer));
                    }
                    customer.Created_By          = User.Identity.Name;
                    customer.Registration_Date   = DateTime.Now;
                    customer.CustomerDiscGroup   = "RSP";
                    customer.CustomerPriceGroup  = "RSP";
                    customer.MembershipDiscGroup = "CATEGORY D";


                    _context.Add(customer);
                    _context.SaveChanges();

                    //update cache
                    IList <CustomerViewModel> customers;
                    if (!_cache.TryGetValue("Customers", out customers))
                    {
                        // Key not in cache, so get data.
                        customers = _context.Customer
                                    .Select(x => new CustomerViewModel
                        {
                            Address               = x.Address,
                            Barcode               = x.Barcode,
                            Code                  = x.Code,
                            CustomerDiscGroup     = x.CustomerDiscGroup,
                            CustomerPriceGroup    = x.CustomerPriceGroup,
                            Is_Member             = x.Is_Member,
                            Is_Sale_Refused       = x.Is_Sale_Refused,
                            MembershipDiscGroup   = x.MembershipDiscGroup,
                            Membership_Number     = x.Membership_Number,
                            Membership_Number_Old = x.Membership_Number_Old,
                            Member_Id             = x.Member_Id,
                            Mobile1               = x.Mobile1,
                            Name                  = x.Name,
                            Type                  = x.Type,
                            Vat = x.Vat
                        }).ToList();
                    }
                    customers.Add(new CustomerViewModel()
                    {
                        Address               = customer.Address,
                        Barcode               = customer.Barcode,
                        Code                  = customer.Code,
                        CustomerDiscGroup     = customer.CustomerDiscGroup,
                        CustomerPriceGroup    = customer.CustomerPriceGroup,
                        Is_Member             = customer.Is_Member,
                        Is_Sale_Refused       = customer.Is_Sale_Refused,
                        MembershipDiscGroup   = customer.MembershipDiscGroup,
                        Membership_Number     = customer.Membership_Number,
                        Membership_Number_Old = customer.Membership_Number_Old,
                        Member_Id             = customer.Member_Id,
                        Mobile1               = customer.Mobile1,
                        Name                  = customer.Name,
                        Type                  = customer.Type,
                        Vat = customer.Vat
                    });
                    _cache.Set("Customer", customers);

                    NavPostData navPost = new NavPostData(_context, _mapper);
                    BackgroundJob.Enqueue(() => navPost.PostCustomer());
                    return(Ok(new { StatusMessage = "Membership Created Successfully !!", Membership = customer }));
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("'UniqueMobileNumber") || ex.InnerException.Message.Contains("UniqueMobileNumber"))
                    {
                        return(StatusCode(409, new { StatusMessage = "Mobile Number Already Register !!" }));
                    }
                    else if (ex.Message.Contains("idx_unique_member_id") || ex.InnerException.Message.Contains("idx_unique_member_id") &&
                             ex.Message.Contains("duplicate") || ex.InnerException.Message.Contains("duplicate"))
                    {
                        return(CreateMembership(customer));
                    }

                    else
                    {
                        return(StatusCode(500, new { StatusMessage = ex.Message }));
                    }

                    //TempData["StatusMessage"] = "Customer Created Successfully !!";
                }
            }
            return(StatusCode(400, new { StatusMessage = "Not Valid" }));
        }