Ejemplo n.º 1
0
        public JsonResult ReserveCard(LoyalityCardReserveViewModel model)
        {
            Response response;
            var      currentUser = GetAuthenticatedUser();
            var      birthDate   = DateUtility.GetDateTime(model.persianBirthDate);
            var      mariageDate = DateUtility.GetDateTime(model.persianMariageDate);

            try
            {
                string message = string.Empty;
                using (var db = new KiaGalleryContext())
                {
                    var card     = db.LoyalityCard.Where(x => x.Code == model.code).SingleOrDefault();
                    var customer = db.CustomerLoyality.Where(x => x.PhoneNumber == model.phoneNumber).SingleOrDefault();
                    if (customer == null)
                    {
                        var entity = new CustomerLoyality
                        {
                            LoyalityCardId = card.Id,
                            FirstName      = model.firstName,
                            LastName       = model.lastName,
                            PhoneNumber    = model.phoneNumber,
                            BirthDate      = DateUtility.GetDateTime(model.birthDate),
                            MariageDate    = DateUtility.GetDateTime(model.mariageDate),
                            Date           = DateTime.Now,
                            ModifyUserId   = currentUser.Id,
                            CreateUserId   = currentUser.Id,
                            ModifyDate     = DateTime.Now,
                            CreateDate     = DateTime.Now,
                            Ip             = Request.UserHostAddress,
                        };
                        card.CustomerList.Add(entity);
                    }
                    else
                    {
                        customer.LoyalityCardId = card.Id;
                        customer.MariageDate    = DateUtility.GetDateTime(model.mariageDate);
                        customer.BirthDate      = DateUtility.GetDateTime(model.birthDate);
                        customer.ModifyUserId   = currentUser.Id;
                        customer.ModifyDate     = DateTime.Now;
                        customer.Date           = DateTime.Now;
                    }
                    card.CardStatus = LoyalityCardStatus.Reserved;
                    var log = new LoyalityCardLog()
                    {
                        LoyalityCardId = card.Id,
                        CardStatus     = LoyalityCardStatus.Reserved,
                        CreateUserId   = currentUser.Id,
                        CreateDate     = DateTime.Now,
                        Ip             = Request.UserHostAddress
                    };
                    db.LoyalityCardLog.Add(log);
                    db.SaveChanges();
                    response = new Response()
                    {
                        status  = 200,
                        message = "اطلاعات با موفقیت ثبت شد."
                    };
                }
            }
            catch (Exception ex)
            {
                response = Core.GetExceptionResponse(ex);
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 2
0
        public JsonResult Save(CustomerLoyalityViewModel model)
        {
            Response response;
            var      currentUser = GetAuthenticatedUser();
            var      date        = DateUtility.GetDateTime(model.persianDate);
            var      returnDate  = DateUtility.GetDateTime(model.persianReturnDate);

            if (date > DateTime.Now)
            {
                response = new Response()
                {
                    status  = 500,
                    message = "تاریخ انتخاب شده بزرگتر از تاریخ امروز می باشد.",
                };
                return(Json(response, JsonRequestBehavior.AllowGet));
            }

            try
            {
                using (var db = new KiaGalleryContext())
                {
                    var personel = db.Person.Where(x => x.MobileNumber == model.phoneNumber).Count();
                    if (personel > 0)
                    {
                        response = new Response()
                        {
                            status  = 500,
                            message = "این شماره متعلق به پرسنل کیا گالری میباشد که شامل مشتریان وفادار نمیشوند.",
                        };
                        return(Json(response, JsonRequestBehavior.AllowGet));
                    }
                }
                if (!ValidateMobileNumber(model.phoneNumber))
                {
                    response = new Response()
                    {
                        status  = 500,
                        message = "تلفن همراه وارد شده صحیح نیست. لطفا تلفن همراه را در قالب 09123456789 وارد نمایید. \n مثال:0912123456789",
                    };
                    return(Json(response, JsonRequestBehavior.AllowGet));
                }
                else
                {
                    using (var db = new KiaGalleryContext())
                    {
                        var SilverCardValue   = db.Settings.SingleOrDefault(x => x.Key == Settings.KeySilverCardValue)?.Value;
                        var GoldenCardValue   = db.Settings.SingleOrDefault(x => x.Key == Settings.KeyGoldenCardValue)?.Value;
                        var PlatinumCardValue = db.Settings.SingleOrDefault(x => x.Key == Settings.KeyPlatinumCardValue)?.Value;

                        var SilverCardLevel   = db.Settings.SingleOrDefault(x => x.Key == Settings.KeySilverCardLevel)?.Value;
                        var GoldenCardLevel   = db.Settings.SingleOrDefault(x => x.Key == Settings.KeyGoldenCardLevel)?.Value;
                        var PlatinumCardLevel = db.Settings.SingleOrDefault(x => x.Key == Settings.KeyPlatinumCardLevel)?.Value;
                        if (model.customerId > 0)
                        {
                            var entity = db.CustomerLoyality.Single(x => x.Id == model.customerId);
                            entity.FirstName   = model.firstName;
                            entity.LastName    = model.lastName;
                            entity.PhoneNumber = model.phoneNumber;
                            db.SaveChanges();
                            response = new Response()
                            {
                                status  = 200,
                                message = "ویرایش اطلاعات با موفقیت انجام شد."
                            };
                            return(Json(response, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            if (model.id > 0)
                            {
                                if (model.purchaseType == PurchaseType.Return)
                                {
                                    var entity = db.CustomerFactor.Single(x => x.Id == model.id);
                                    entity.ReturnDate   = returnDate;
                                    entity.ProductCode  = model.productCode;
                                    entity.FactorNumber = model.factorNumber;
                                    entity.FactorPrice  = model.factorPrice;
                                    entity.PurchaseType = model.purchaseType;
                                    entity.Ip           = Request.UserHostAddress;
                                    entity.ModifyUserId = currentUser.Id;
                                    entity.ModifyDate   = DateTime.Now;
                                    entity.CustomerLoyality.FirstName   = model.firstName;
                                    entity.CustomerLoyality.LastName    = model.lastName;
                                    entity.CustomerLoyality.PhoneNumber = model.phoneNumber;
                                    db.SaveChanges();
                                    response = new Response()
                                    {
                                        status  = 200,
                                        message = "ویرایش اطلاعات با موفقیت انجام شد."
                                    };
                                }
                                else
                                {
                                    var entity = db.CustomerFactor.Single(x => x.Id == model.id);
                                    entity.Date         = date.Value;
                                    entity.ProductCode  = model.productCode;
                                    entity.FactorNumber = model.factorNumber;
                                    entity.FactorPrice  = model.factorPrice;
                                    entity.FactorWeight = model.factorWeight;
                                    entity.PurchaseType = model.purchaseType;
                                    entity.Ip           = Request.UserHostAddress;
                                    entity.ModifyUserId = currentUser.Id;
                                    entity.ModifyDate   = DateTime.Now;
                                    entity.CustomerLoyality.FirstName   = model.firstName;
                                    entity.CustomerLoyality.LastName    = model.lastName;
                                    entity.CustomerLoyality.PhoneNumber = model.phoneNumber;
                                    db.SaveChanges();
                                    response = new Response()
                                    {
                                        status  = 200,
                                        message = "ویرایش اطلاعات با موفقیت انجام شد."
                                    };
                                }
                            }
                            else
                            {
                                var entity = db.CustomerLoyality.SingleOrDefault(x => x.PhoneNumber == model.phoneNumber);
                                //double setting = 1;
                                if (entity != null)
                                {
                                    if (model.purchaseType == PurchaseType.Return)
                                    {
                                        var factorInfo  = db.CustomerFactor.Single(x => x.Id == model.hiddenId && x.CustomerLoyality.PhoneNumber == model.phoneNumber);
                                        var productCode = db.CustomerFactor.Single(x => x.Id == model.hiddenId).ProductCode.Split('-');
                                        var codes       = model.productCode.Split('-');
                                        foreach (var code in codes)
                                        {
                                            if (productCode.Count(v => v == code) > 0)
                                            {
                                                productCode = productCode.Where(x => x != code).ToArray();
                                            }
                                            else
                                            {
                                                response = new Response()
                                                {
                                                    status  = 404,
                                                    message = "کد کالا یافت نشد یامحصولی با این کد قبلا مرجوع شده."
                                                };
                                                return(Json(response, JsonRequestBehavior.AllowGet));
                                            }
                                            if (productCode.Count(v => v == code) == 0)
                                            {
                                                productCode = productCode.Where(x => x != code).ToArray();
                                            }
                                            else
                                            {
                                                response = new Response()
                                                {
                                                    status  = 404,
                                                    message = "کدکالا وارد نشده است."
                                                };
                                                return(Json(response, JsonRequestBehavior.AllowGet));
                                            }
                                        }
                                        string dash = "-";
                                        string stringProductCode;
                                        stringProductCode = string.Join(dash, productCode);
                                        var returnFactor = new CustomerFactor()
                                        {
                                            Date               = factorInfo.Date,
                                            ReturnDate         = returnDate,
                                            ProductCode        = model.productCode,
                                            BranchId           = currentUser.BranchId.Value,
                                            CustomerLoyalityId = entity.Id,
                                            FactorNumber       = model.factorNumber,
                                            FactorPrice        = model.factorPrice,
                                            PurchaseType       = model.purchaseType,
                                            CreateUserId       = currentUser.Id,
                                            ModifyUserId       = currentUser.Id,
                                            CreateDate         = DateTime.Now,
                                            ModifyDate         = DateTime.Now,
                                            Ip = Request.UserHostAddress
                                        };
                                        db.CustomerFactor.Add(returnFactor);
                                        factorInfo.CustomerLoyality.FirstName = model.firstName;
                                        factorInfo.CustomerLoyality.LastName  = model.lastName;
                                        factorInfo.ProductCode  = stringProductCode;
                                        factorInfo.FactorNumber = model.factorNumber;
                                        factorInfo.FactorPrice  = factorInfo.FactorPrice;
                                        factorInfo.PurchaseType = PurchaseType.Buy;
                                        factorInfo.Ip           = Request.UserHostAddress;
                                        factorInfo.ModifyUserId = currentUser.Id;
                                        factorInfo.ModifyDate   = DateTime.Now;
                                        factorInfo.CustomerLoyality.PhoneNumber = model.phoneNumber;
                                        response = new Response()
                                        {
                                            status  = 200,
                                            message = "ثبت اطلاعات با موفقیت انجام شد."
                                        };
                                        db.SaveChanges();
                                    }
                                    else
                                    {
                                        var factor = new CustomerFactor()
                                        {
                                            Date               = date.Value,
                                            ProductCode        = model.productCode,
                                            BranchId           = currentUser.BranchId.Value,
                                            CustomerLoyalityId = entity.Id,
                                            FactorNumber       = model.factorNumber,
                                            FactorPrice        = model.factorPrice,
                                            FactorWeight       = model.factorWeight,
                                            PurchaseType       = model.purchaseType,
                                            CreateUserId       = currentUser.Id,
                                            ModifyUserId       = currentUser.Id,
                                            CreateDate         = DateTime.Now,
                                            ModifyDate         = DateTime.Now,
                                            Ip = Request.UserHostAddress,
                                        };
                                        //entity.Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString());
                                        Random random = new Random(Guid.NewGuid().GetHashCode());
                                        int    number = random.Next(10000, 99999);
                                        var    survey = new CustomerSurvey()
                                        {
                                            Code           = number.ToString(),
                                            CustomerFactor = factor,
                                            CreateDate     = DateTime.Now,
                                            CreateUserId   = currentUser.Id,
                                            Ip             = Request.UserHostAddress
                                        };
                                        //Task.Factory.StartNew(() =>
                                        //{
                                        //NikSmsWebServiceClient.SendSmsNik("srvey.kia-gallery.com/" + number.ToString(), "09354047788");
                                        //    NikSmsWebServiceClient.SendSmsNik("survey.kia-gallery.com/"+ number.ToString(), "09193121247");
                                        //    NikSmsWebServiceClient.SendSmsNik("www.kia-gallery.com/" + number.ToString(), model.phoneNumber);
                                        //});
                                        db.CustomerSurvey.Add(survey);
                                        response = new Response()
                                        {
                                            status  = 200,
                                            message = "ثبت اطلاعات با موفقیت انجام شد."
                                        };
                                        db.CustomerFactor.Add(factor);
                                        db.SaveChanges();
                                    }
                                }
                                else
                                {
                                    //if (entity.CustomerCardLevel == CustomerCardLevel.Silver)
                                    //{
                                    //    setting = double.Parse(SilverCardValue);
                                    //}
                                    //if (entity.CustomerCardLevel == CustomerCardLevel.Gold)
                                    //{
                                    //    setting = double.Parse(GoldenCardValue);
                                    //}
                                    //if (entity.CustomerCardLevel == CustomerCardLevel.Platinum)
                                    //{
                                    //    setting = double.Parse(PlatinumCardValue);
                                    //}

                                    var loyality = new CustomerLoyality()
                                    {
                                        FirstName = model.firstName,
                                        LastName  = model.lastName,
                                        //Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString()),
                                        PhoneNumber  = model.phoneNumber,
                                        Date         = DateTime.Now,
                                        CreateUserId = currentUser.Id,
                                        ModifyUserId = currentUser.Id,
                                        CreateDate   = DateTime.Now,
                                        ModifyDate   = DateTime.Now,
                                        Ip           = Request.UserHostAddress,
                                    };
                                    var factor = new CustomerFactor()
                                    {
                                        Date             = date.Value,
                                        ProductCode      = model.productCode,
                                        ReturnDate       = returnDate,
                                        BranchId         = currentUser.BranchId.Value,
                                        CustomerLoyality = loyality,
                                        FactorNumber     = model.factorNumber,
                                        FactorPrice      = model.factorPrice,
                                        FactorWeight     = model.factorWeight,
                                        PurchaseType     = model.purchaseType,
                                        CreateUserId     = currentUser.Id,
                                        ModifyUserId     = currentUser.Id,
                                        CreateDate       = DateTime.Now,
                                        ModifyDate       = DateTime.Now,
                                        Ip = Request.UserHostAddress
                                    };

                                    Random random = new Random(Guid.NewGuid().GetHashCode());
                                    int    number = random.Next(10000, 99999);
                                    var    survey = new CustomerSurvey()
                                    {
                                        Code           = number.ToString(),
                                        CustomerFactor = factor,
                                        CreateDate     = DateTime.Now,
                                        CreateUserId   = currentUser.Id,
                                        Ip             = Request.UserHostAddress
                                    };
                                    //Task.Factory.StartNew(() =>
                                    //{
                                    //    NikSmsWebServiceClient.SendSmsNik("srvey.kia-gallery.com/" + number.ToString(), "09354047788");
                                    //    NikSmsWebServiceClient.SendSmsNik("survey.kia-gallery.com/" + number.ToString(), "09193121247");
                                    //});
                                    db.CustomerSurvey.Add(survey);
                                    response = new Response()
                                    {
                                        status  = 200,
                                        message = "ثبت اطلاعات با موفقیت انجام شد."
                                    };
                                    db.CustomerLoyality.Add(loyality);

                                    db.CustomerFactor.Add(factor);
                                    db.SaveChanges();

                                    //if (loyality.Credit >= long.Parse(SilverCardLevel))
                                    //{
                                    //    var customerCardlevelLog = new CustomerCreditLog()
                                    //    {
                                    //        CustomerId = loyality.Id,
                                    //        Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString()),
                                    //        CustomerCardLevel = CustomerCardLevel.Silver
                                    //    };
                                    //}
                                    //else if (loyality.Credit >= long.Parse(GoldenCardLevel))
                                    //{
                                    //    var customerCardlevelLog = new CustomerCreditLog()
                                    //    {
                                    //        CustomerId = loyality.Id,
                                    //        Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString()),
                                    //        CustomerCardLevel = CustomerCardLevel.Gold
                                    //    };
                                    //}
                                    //else if (loyality.Credit >= long.Parse(PlatinumCardLevel))
                                    //{
                                    //    var customerCardlevelLog = new CustomerCreditLog()
                                    //    {
                                    //        CustomerId = loyality.Id,
                                    //        Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString()),
                                    //        CustomerCardLevel = CustomerCardLevel.Platinum
                                    //    };
                                    //}
                                    //else
                                    //{
                                    //    var customerCardlevelLog = new CustomerCreditLog()
                                    //    {
                                    //        CustomerId = loyality.Id,
                                    //        Credit = long.Parse(Math.Round((model.factorPrice * setting / 100) / 1000).ToString()),
                                    //        CustomerCardLevel = CustomerCardLevel.None
                                    //    };
                                    //}
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response = Core.GetExceptionResponse(ex);
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }