public async Task <IActionResult> GivePromoCodesToCustomersWithPreferenceAsync(GivePromoCodeRequest request)
        {
            //Получаем предпочтение по имени
            var preference =
                (await _preferencesGateway.GetPreferencesAsync()).FirstOrDefault(
                    item => item.Id == request.PreferenceId);

            if (preference == null)
            {
                return(BadRequest());
            }

            //  Получаем клиентов с этим предпочтением:
            var customers = await _customersRepository
                            .GetWhere(d => d.PreferencesId.Any(x =>
                                                               x == preference.Id));

            PromoCode promoCode = PromoCodeMapper.MapFromModel(request, preference);

            //Добавляем промокод клинетам
            foreach (var customer in customers)
            {
                customer.PromoCodesId.Add(promoCode.Id);
                await _customersRepository.UpdateAsync(customer);
            }
            await _promoCodesRepository.AddAsync(promoCode);

            return(CreatedAtAction(nameof(GetPromocodesAsync), new { }, null));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> PutPromoCode([FromRoute] long id, [FromBody] PromoCode promoCode)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != promoCode.Code)
            {
                return(BadRequest());
            }

            _context.Entry(promoCode).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PromoCodeExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
        public void GetPromoCodeByCodeAsync_PromoCodeExist_PromoCodeDtoRetrieved()
        {
            // Arrange
            var code      = "PROMOCODE123";
            var value     = 50M;
            var promoCode = new PromoCode
            {
                Id    = 1,
                Code  = code,
                Value = value,
            };

            _foodAppContext.PromoCodes.Add(promoCode);
            _foodAppContext.SaveChanges();

            // Act
            var result = _promoCodeManager
                         .GetPromoCodeByCodeAsync(code)
                         .GetAwaiter()
                         .GetResult();

            // Assert
            Assert.NotNull(result);
            Assert.Equal(code, result.Code);
            Assert.Equal(value, result.Value);
        }
Ejemplo n.º 4
0
        public override async Task <ExecutionStatusResponse> CreatePromo(PromoCreateRequest request, ServerCallContext context)
        {
            var toSaveCode = new PromoCode()
            {
                Code           = PromoGenerator.GenerateCode(),
                Title          = request.Title,
                ExpirationDate = Convert.ToDateTime(request.ExpirationDate),
                Discount       = request.Discount
            };

            var res = new ExecutionStatusResponse
            {
                Status = false
            };

            try
            {
                await _repository.CreateAsync(toSaveCode);

                res.Status = true;
                return(res);
            }
            catch (Exception e)
            {
                _logger.LogError($"[PROMO-CREATION]<>Some errors occured: {e.Message}");
            }

            return(res);
        }
Ejemplo n.º 5
0
 private void btnDelete_Click(object sender, EventArgs e)
 {
     try
     {
         PromoCode p;
         if ((int)dataPromos.SelectedRows[0].Cells[0].Value != 6)
         {
             if (dataPromos.SelectedRows.Count == 0)
             {
                 MessageBoxes.Info("No item(s) selected.\nPlease select an item to delete.");
             }
             else
             {
                 string warningMessage = "Are you sure want to delete " + dataPromos.SelectedRows.Count + "Item(s)?\nThis action can't be overturned.";
                 if (MessageBoxes.Warning(warningMessage) == true)
                 {
                     p = new PromoCode((int)dataPromos.SelectedRows[0].Cells[0].Value);
                     p.Delete();
                     Reset();
                     dataPromos.Refresh();
                 }
             }
         }
         else
         {
             MessageBoxes.Info("The Promo Code you have chosen is the default code and cannot be deleted.");
         }
     }
     catch (Exception ex)
     {
         MessageBoxes.Error(ex.Message);
     }
 }
Ejemplo n.º 6
0
 public ActionResult AddPromo(PromoCodeViewModel model)
 {
     ViewBag.ErrorFlag = false;
     if (!ModelState.IsValid)
     {
         return(View());
     }
     try
     {
         try
         {
             PromoCode promo = new PromoCode(model.Code, model.Discount);
             return(RedirectToAction("ViewPromos"));
         }
         catch (UniqueKeyViolationException ex)
         {
             ViewBag.ErrorFlag = true;
             ModelState.AddModelError(String.Empty, ex.Message);
             return(View());
         }
     }
     catch (Exception ex)
     {
         return(RedirectToAction("ErrorPage", "Error", ex));
     }
 }
        public static PromoCode MapFromModel(
            GivePromoCodeRequest request,
            Preference preference,
            IEnumerable <Customer> customers)
        {
            var promoCode = new PromoCode
            {
                Code        = request.PromoCode,
                ServiceInfo = request.ServiceInfo,
                PartnerName = request.PartnerName,
                BeginDate   = DateTime.Today,
                EndDate     = DateTime.Today.AddDays(30),
                Preference  = preference,
                Customers   = new List <PromoCodeCustomer>(),
            };

            if (customers?.Any() == false)
            {
                return(promoCode);
            }

            promoCode.Customers = customers
                                  .Select(x => new PromoCodeCustomer(promoCode, x))
                                  .ToList();


            return(promoCode);
        }
Ejemplo n.º 8
0
        public async Task GivePromoCodesToCustomersWithPreferenceAsync(PromoCode promoCode)
        {
            var preference = await _preferencesRepository.GetByIdAsync(promoCode.PreferenceId);

            if (preference == null)
            {
                throw new EntityNotFoundException(promoCode.PreferenceId);
            }

            //  Получаем клиентов с этим предпочтением:
            var customers = await _customersRepository
                            .GetWhere(d => d.Preferences.Any(x =>
                                                             x.Preference.Id == preference.Id));

            promoCode.Preference   = preference;
            promoCode.PreferenceId = preference.Id;

            promoCode.Customers = new List <PromoCodeCustomer>();

            foreach (var item in customers)
            {
                promoCode.Customers.Add(new PromoCodeCustomer()
                {
                    CustomerId  = item.Id,
                    Customer    = item,
                    PromoCodeId = promoCode.Id,
                    PromoCode   = promoCode
                });
            }
            ;

            await _promoCodesRepository.AddAsync(promoCode);
        }
        public static PromoCode MapGromModel(GivePromoCodeRequest request, Preference preference, IEnumerable <Customer> customers)
        {
            var promocode = new PromoCode();

            promocode.Id = Guid.NewGuid();

            promocode.PartnerName = request.PartnerName;
            promocode.Code        = request.PromoCode;
            promocode.ServiceInfo = request.ServiceInfo;

            promocode.BeginDate = DateTime.Now;
            promocode.EndDate   = DateTime.Now.AddDays(30);

            promocode.Preference   = preference;
            promocode.PreferenceId = preference.Id;

            promocode.Customers = new List <PromoCodeCustomer>();

            foreach (var item in customers)
            {
                promocode.Customers.Add(new PromoCodeCustomer()
                {
                    CustomerId  = item.Id,
                    Customer    = item,
                    PromoCodeId = promocode.Id,
                    PromoCode   = promocode
                });
            }
            ;

            return(promocode);
        }
Ejemplo n.º 10
0
        public static void AddStudentDiscount(PromoCode promo, int StudentID, double ClassPrice, double TotalPrice)
        {
            Context db = new Context();

            StudentPayment oDiscount = new StudentPayment();

            oDiscount.StudentID   = StudentID;
            oDiscount.type        = "Discount";
            oDiscount.Detail      = promo.Code;
            oDiscount.PaymentDate = DateTime.Now;

            if (promo.Type == "DollarsOff")
            {
                oDiscount.Amount = promo.DiscountValue;
            }
            else
            {
                double percent = promo.DiscountValue / 100;
                if (promo.IsDiscountForShippingAndAdon)
                {
                    oDiscount.Amount = TotalPrice * percent;
                }
                else
                {
                    oDiscount.Amount = ClassPrice * percent;
                }
            }
            db.StudentPayment.Add(oDiscount);
            db.SaveChanges();
        }
Ejemplo n.º 11
0
        private async void dgData_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            if (e.EditAction == DataGridEditAction.Commit)
            {
                loader.Visibility = Visibility.Visible;

                var dc = e.Row.DataContext as PromoCode;
                var q  = await _ctx.PromoCodes.FirstOrDefaultAsync(x => x.Id == dc.Id);

                if (q != null)
                {
                    FillPromoCodeData(dc, q);

                    await _ctx.SaveChangesAsync();
                }
                else
                {
                    q = new PromoCode();
                    FillPromoCodeData(dc, q);

                    _ctx.PromoCodes.Add(q);
                    await _ctx.SaveChangesAsync();
                }


                dgData.ItemsSource = await _ctx.PromoCodes.ToListAsync();

                loader.Visibility = Visibility.Collapsed;
            }
        }
Ejemplo n.º 12
0
        public ActionResult Index(int?id)
        {
            ViewBag.ActiveMenu = 1;

            PromoCode areaModel = new PromoCode();

            if (id != null)
            {
                using (PromoCodeRepository vehiclesProxy = new PromoCodeRepository())
                {
                    areaModel = vehiclesProxy.GetById((int)id);
                }

                return(PartialView("_AddPromo", areaModel));
            }
            else
            {
                if (Request.IsAjaxRequest())
                {
                    return(PartialView("_AddPromo", areaModel));
                }
                else
                {
                    return(View(areaModel));
                }
            }
        }
Ejemplo n.º 13
0
        // Calculates the cost once the discount has been applied
        public decimal GetCostAfterDiscount(decimal currentTotal, string promoCode)
        {
            if (promoCode != null && promoCode != "")           // Checks that a promo code has been entered
            {
                IList <PromoCode> promoCodes = GetPromoCodes(); // Gets the list of all promo codes
                PromoCode         selected   = promoCodes.FirstOrDefault(code =>
                {
                    return(code.Code.ToLower() == promoCode.ToLower()); // Selects the matching promo code
                });

                if (selected != null && selected.ValidUntil > DateTime.Now)      // Checks whether the promo code is valid
                {
                    decimal discount = (currentTotal / 100) * selected.Discount; // Calculates the discount from the amount and the percentage discount

                    return(currentTotal - discount);                             // Take away the discount from the total
                }
                else
                {
                    return(-1); // Returns an error message if the promo code is invalid
                }
            }
            else
            {
                return(currentTotal); // If promo code has not been entered, return the total
            }
        }
Ejemplo n.º 14
0
        public ActionResult ApplyPromo(string code)
        {
            var result = new ShoppingCartJSonMessageModel();

            result.ItemCount = "0";
            result.Message   = WBSSLStore.Resources.ErrorMessage.Message.ValidPromocode;
            PromoCode PRow = _service.GetPromoRow(code, Site.ID);

            if (PRow != null && PRow.ID > 0)
            {
                GetShoppingCart();

                foreach (ShoppingCartDetail sd in _viewModel.CartDetails)
                {
                    AssignPromoInCart(PRow, sd);
                    if (!string.IsNullOrEmpty(sd.PromoCode) && sd.PromoDiscount > 0)
                    {
                        result.ItemCount      = "1";
                        result.Message        = WBSSLStore.Resources.ErrorMessage.Message.PromoAppliedSuccess;
                        result.promodiscount += string.Format("{0:C}", sd.PromoDiscount) + "|-----|";
                        result.Id            += sd.ID + "|-----|";
                    }
                }

                decimal?amount = _viewModel.CartDetails.Sum(p => (decimal?)p.Price) - _viewModel.CartDetails.Sum(p => (decimal?)p.PromoDiscount);
                result.CartTotal = string.Format("{0:C}", amount ?? 0);
                _service.AddToCart(_viewModel);
            }
            return(Json(result));
        }
Ejemplo n.º 15
0
 public IActionResult UpdatePromoCode(AddPromoCodeModel addPromoCodeModel)
 {
     try
     {
         if (ModelState.IsValid)
         {
             PromoCode promoCodeModel = PromoCodeHelper.BindPromoCode(addPromoCodeModel);
             long      promoCodeId    = iPromoCode.UpdatePromocode(promoCodeModel);
             if (promoCodeId > 0)
             {
                 return(Ok(ResponseHelper.Success(MessageConstants.PromocodeUpdated)));
             }
             else if (promoCodeId == ReturnCode.AlreadyExist.GetHashCode())
             {
                 return(Ok(ResponseHelper.Error(MessageConstants.TryDifferentCode)));
             }
             else
             {
                 return(Ok(ResponseHelper.Error(MessageConstants.PromocodeNotUpdated)));
             }
         }
         else
         {
             return(Ok(ResponseHelper.Error(MessageConstants.CompulsoryData)));
         }
     }
     catch (Exception ex)
     {
         LogHelper.ExceptionLog(ex.Message + "  :::::  " + ex.StackTrace);
         return(Ok(ResponseHelper.Error(ex.Message)));
     }
 }
Ejemplo n.º 16
0
        private bool Validate(PromoCode code, out string message)
        {
            message = null;
            if (String.IsNullOrEmpty(code.Key))
            {
                message = "Key is empty";
                return(false);
            }

            if (!_keyRegex.IsMatch(code.Key))
            {
                message = "Key doesn't match pattern of 8 latin letters or digits";
                return(false);
            }

            if (code.AbsoluteValue < 0)
            {
                message = "AbsoluteValue must be positive";
                return(false);
            }

            if (code.PercentValue < 0 || code.PercentValue > 100)
            {
                message = "PercentValue must be in range of [0,100]";
                return(false);
            }
            return(true);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Convers to promo code.
        /// </summary>
        /// <param name="addPromoCodeModel">The model.</param>
        /// <returns></returns>
        public static PromoCode BindPromoCode(AddPromoCodeModel addPromoCodeModel)
        {
            PromoCode promoCodeModel = new PromoCode();

            if (addPromoCodeModel != null)
            {
                if (!string.IsNullOrEmpty(addPromoCodeModel.PromoCodeId))
                {
                    promoCodeModel.PromoCodeId = DBHelper.ParseInt64(addPromoCodeModel.PromoCodeId);
                }
                promoCodeModel.Name = addPromoCodeModel.Name;
                promoCodeModel.Code = addPromoCodeModel.Code;
                if (!string.IsNullOrEmpty(addPromoCodeModel.StartDate))
                {
                    promoCodeModel.StartDate = Convert.ToDateTime(addPromoCodeModel.StartDate);
                }
                if (!string.IsNullOrEmpty(addPromoCodeModel.ExpiryDate))
                {
                    promoCodeModel.ExpiryDate = Convert.ToDateTime(addPromoCodeModel.ExpiryDate);
                }
                promoCodeModel.Description = addPromoCodeModel.Description;
                promoCodeModel.Amount      = DBHelper.ParseDecimal(addPromoCodeModel.Amount);
                promoCodeModel.Percentage  = DBHelper.ParseDecimal(addPromoCodeModel.Percentage);
                promoCodeModel.CreatedBy   = DBHelper.ParseInt64(addPromoCodeModel.CreatedBy);
                promoCodeModel.Status      = DBHelper.ParseInt32(addPromoCodeModel.Status);
                if (!string.IsNullOrEmpty(addPromoCodeModel.UpdatedBy))
                {
                    promoCodeModel.UpdatedBy = DBHelper.ParseInt64(addPromoCodeModel.UpdatedBy);
                }
            }
            return(promoCodeModel);
        }
Ejemplo n.º 18
0
        public Task UpdateAsync(string key, PromoCode code)
        {
            var normKey = NormalizeKey(key);

            code.Key = normKey;
            return(_codes.ReplaceOneAsync(c => c.Key == normKey, code));
        }
Ejemplo n.º 19
0
        public static PromoCode MapFromModel(GivePromoCodeRequest request, PreferenceDto preference)
        {
            var promocode = new PromoCode();

            promocode.Id = request.PromoCodeId;

            promocode.PartnerId   = request.PartnerId;
            promocode.Code        = request.PromoCode;
            promocode.ServiceInfo = request.ServiceInfo;

            promocode.BeginDate = DateTime.Parse(request.BeginDate);
            promocode.EndDate   = DateTime.Parse(request.EndDate);

            promocode.Preference = preference;
            //promocode.PreferenceId = preference.Id;

            //promocode.Customers = new List<PromoCodeCustomer>();

            // foreach (var customer in customers)
            // {
            //     customer.PromoCodesId.Add(promocode.Id);
            //
            //     // promocode.Customers.Add(new PromoCodeCustomer()
            //     // {
            //     //
            //     //     CustomerId = item.Id,
            //     //     Customer = item,
            //     //     PromoCodeId = promocode.Id,
            //     //     PromoCode = promocode
            //     // });
            // };

            return(promocode);
        }
Ejemplo n.º 20
0
        public async Task <IActionResult> ReceivePromoCodeFromPartnerWithPreferenceAsync(Guid id,
                                                                                         ReceivingPromoCodeRequest request)
        {
            var partner = await _partnersRepository.GetByIdAsync(id);

            if (partner == null)
            {
                return(BadRequest("Партнер не найден"));
            }

            var activeLimit = partner.PartnerLimits.FirstOrDefault(x
                                                                   => !x.CancelDate.HasValue && x.EndDate > DateTime.Now);

            if (activeLimit == null)
            {
                return(BadRequest("Нет доступного лимита на предоставление промокодов"));
            }

            if (partner.NumberIssuedPromoCodes + 1 > activeLimit.Limit)
            {
                return(BadRequest("Лимит на выдачу промокодов превышен"));
            }

            if (partner.PromoCodes.Any(x => x.Code == request.PromoCode))
            {
                return(BadRequest("Данный промокод уже был выдан ранее"));
            }

            //Получаем предпочтение по имени
            var preference = (await _preferencesGateway.GetPreferencesAsync())
                             .FirstOrDefault(item => item.Id == request.PreferenceId);

            if (preference == null)
            {
                return(BadRequest("Предпочтение не найдено"));
            }

            PromoCode promoCode = PromoCodeMapper.MapFromModel(request, preference, partner);

            partner.PromoCodes.Add(promoCode);
            partner.NumberIssuedPromoCodes++;

            await _partnersRepository.UpdateAsync(partner);

            //TODO: Чтобы информация о том, что промокод был выдан парнером была отправлена
            //в микросервис рассылки клиентам нужно либо вызвать его API, либо отправить событие в очередь
            await _givingPromoCodeToCustomerGateway.GivePromoCodeToCustomer(promoCode);

            //TODO: Чтобы информация о том, что промокод был выдан парнером была отправлена
            //в микросервис администрирования нужно либо вызвать его API, либо отправить событие в очередь

            if (request.PartnerManagerId.HasValue)
            {
                await _administrationGateway.NotifyAdminAboutPartnerManagerPromoCode(request.PartnerManagerId.Value);
            }

            return(CreatedAtAction(nameof(GetPartnerPromoCodeAsync),
                                   new { id = partner.Id, promoCodeId = promoCode.Id }, null));
        }
 public void Insert(PromoCode entity)
 {
     if (entity != null)
     {
         _appContext.PromoCodesDb().Add(entity);
         _appContext.SaveChanges();
     }
 }
Ejemplo n.º 22
0
    private static void ShowFullInfoWithoutActions(PromoCode promoCode, string title)
    {
        var code  = promoCode.Code;
        var popup = new MNPopup(title, FormatInfo(promoCode));

        popup.AddAction("OK", () => { });
        popup.Show();
    }
 public void Delete(PromoCode entity)
 {
     if (entity != null)
     {
         _appContext.PromoCodesDb().Remove(entity);
         _appContext.SaveChanges();
     }
 }
 public void Update(PromoCode entity)
 {
     if (entity != null)
     {
         _appContext.PromoCodesDb().Update(entity);
         _appContext.SaveChanges();
     }
 }
Ejemplo n.º 25
0
 public ActionResult AddPromoCode(PromoCode promoCode)
 {
     if (promoCodeManager.InsertPromoCode(promoCode))
     {
         return(View());
     }
     return(null);
 }
Ejemplo n.º 26
0
 public void a_AddValid()
 {
     var response = client.AddPromoCode(entity);
     WasSuccessfulTest(response);
     Assert.True(response.Data.id > 0);
     Assert.True(response.Data.data_saved.id == response.Data.id);
     entity = response.Data.data_saved;
 }
        public ActionResult DeleteConfirmed(int id)
        {
            PromoCode promoCode = db.PromoCodes.Find(id);

            db.PromoCodes.Remove(promoCode);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 28
0
        private void AddDataInCart(ShoppingCartDetail _Detail, int Quantity)
        {
            GetShoppingCart();
            if (Quantity <= 0)
            {
                Quantity = 1;
            }
            if (_viewModel.Cart.ID == 0)
            {
                _viewModel.Cart.AuditID = 1;
                _viewModel.Cart.SiteID  = Site.ID;
                if (CurrentUser != null && CurrentUser.ID > 0)
                {
                    _viewModel.Cart.UserID             = CurrentUser.ID;
                    _viewModel.Cart.UserAnonymousToken = string.Empty;
                }
                else
                {
                    _viewModel.Cart.UserAnonymousToken = AnonymousID;
                }

                _viewModel.Cart.Email = "";
            }


            ShoppingCartDetail cartdetail;

            ProductPricing pp   = _service.GetProductPricing(_Detail.ProductPriceID, Site.ID);
            PromoCode      prow = null;

            if (promo != "")
            {
                prow = _service.GetPromoRow(promo, Site.ID);
            }

            for (int iCnt = 1; iCnt <= Quantity; iCnt++)
            {
                cartdetail = new ShoppingCartDetail();

                cartdetail.AdditionalDomains    = _Detail.AdditionalDomains;
                cartdetail.IsCompetitiveUpgrade = _Detail.IsCompetitiveUpgrade;
                cartdetail.NumberOfServers      = _Detail.NumberOfServers;
                cartdetail.isNewOrder           = _Detail.isNewOrder;
                cartdetail.PromoCode            = _Detail.PromoCode;
                cartdetail.ProductID            = pp.ProductID;
                cartdetail.ProductPriceID       = _Detail.ProductPriceID;
                cartdetail.Comment      = _Detail.Comment;
                cartdetail.Price        = CalCulatePrice(pp, _Detail.NumberOfServers, _Detail.AdditionalDomains);;
                cartdetail.ShoppingCart = _viewModel.Cart;

                AssignPromoInCart(prow, cartdetail);

                _viewModel.CartDetails.Add(cartdetail);
            }

            _service.AddToCart(_viewModel);
        }
Ejemplo n.º 29
0
 private static void FillPromoCodeData(PromoCode dc, PromoCode q)
 {
     q.IsMultipleRedeemable = dc.IsMultipleRedeemable;
     q.Code           = dc.Code;
     q.ExpirationDate = dc.ExpirationDate;
     q.MaxRedeems     = dc.MaxRedeems;
     q.ObjectType     = dc.ObjectType;
     q.Value          = dc.Value;
 }
Ejemplo n.º 30
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            PromoCode promoCode = await db.PromoCodes.FirstOrDefaultAsync(p => p.Id == id);

            db.PromoCodes.Remove(promoCode);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Ejemplo n.º 31
0
 public Task UpdateAsync(string key, PromoCode code)
 {
     code.Key = key;
     if (!Validate(code, out var msg))
     {
         throw new PromoCodeValidationException(msg);
     }
     return(_codeRepository.UpdateAsync(key, code));
 }
Ejemplo n.º 32
0
        protected void ApplyForPromoCode(object sender, ActiveEventArgs e)
        {
            e.Params["Success"].Value = false;
            string code = e.Params["Code"].Get<string>().Trim();
            string email = e.Params["Email"].Get<string>().Trim();
            string cause = e.Params["Cause"].Get<string>().Trim();
            if (code == Language.Instance["WantedPromoCode2", null, "Promo code desire"])
            {
                e.Params["Error"].Value = Language.Instance["NeedUniquePromoCode", null, "You need to create your own unique code. Type in e.g. your name or something. Don't use spaces in your code!"];
                return;
            }
            if (code.IndexOfAny(new char[] { ' ', '\t', '\r', '\n', '/', '&', '/', '\\', '%', '@' }) != -1)
            {
                e.Params["Error"].Value = Language.Instance["OnlyPromoCharacter", null, "Please use only alpha-numeric characters in your code!"];
                return;
            }
            if (code.Length < 3)
            {
                e.Params["Error"].Value = Language.Instance["PromoCodeNeedsThreeLetter", null, "You must choose a code with more than 3 letters."];
                return;
            }
            if (!email.Contains("@"))
            {
                e.Params["Error"].Value = Language.Instance["PromoCodeNeedValidEmail", null, "Unless you give us a valid email address, we won't be able to send you your money!"];
                return;
            }
            if (!email.Contains("."))
            {
                e.Params["Error"].Value = Language.Instance["PromoCodeNeedValidEmail", null, "Unless you give us a valid email address, we won't be able to send you your money!"];
                return;
            }
            if (PromoCode.CountWhere(Criteria.Eq("Code", code)) > 0)
            {
                e.Params["Error"].Value = Language.Instance["PromoCodeTake", null, "That promo code is unfortunately taken from before. Please choose another code"];
                return;
            }
            if (PromoCode.CountWhere(Criteria.Eq("Email", email)) > 0)
            {
                PromoCode previ = PromoCode.SelectFirst(Criteria.Eq("Email", email));
                e.Params["Error"].Value = Language.Instance["PromoCodeEmailRegisterd", null, "That email is already taken. The code for that email is: "] + previ.Code;
                return;
            }
            PromoCode promo = new PromoCode();
            promo.Code = code;
            promo.Email = email;
            promo.Cause = cause;
            promo.Save();
            e.Params["Success"].Value = true;

            // Sending confirmation email...
            string smtpServer = Settings.Instance["SMTPServer"];
            string smtpServerUsername = Settings.Instance["SMTPServerUsername"];
            string smtpServerPassword = Settings.Instance["SMTPServerPassword"];
            string smtpServerUseSsl = Settings.Instance["SMTPServerUseSsl"];
            string adminEmail = Settings.Instance["AdminEmail"];
            MailMessage msg = new MailMessage();
            msg.To.Add(email);
            msg.From = new MailAddress(adminEmail);
            msg.Subject = Language.Instance["PromoCodeProgramAccepted", null, "Welcome to our Promo Program"];
            msg.Body = string.Format(Language.Instance["PromoAcceptedMailBody", null, @"
This email was sent due to someone applying for a promo code at http://rasoftwarefactory.com/promo-program
If this person was not you, then please ignore this email.

Welcome to the Ra-Software Promo program. Your promo code is ""{0}"". When someone buys a website from http://rasoftwarefactory.com/products/websites with your promo code we will contact you on email and ask where you want us to send your cheque.

We will also donate $100 to {1} when someone uses your promo code to purchase our website product.

Make sure your friend, colleague, family member, uncle, partner, whatever punches in the *correct* promo code whenever they send us an email requesting a inquiry about a new website, since otherwise we have no way to determine who to send the $200 to.

All our ""contact us"" forms at http://rasoftwarefactory.com contains a field where people can type in a promo code. If they contact us for any reasons, and then later purchases our website product, you will get your money, and your cause will get its money.

If you want to have a link that directly will associate any ""contact us"" request to your promo code you can use this link:

http://rasoftwarefactory.com?promo={0}

If you give people the above link, all ""contact us"" request they send in after clicking that link will automatically associate any purchase with you.

We ask you to not send unsolicited emails [spam] with your promo code.

If you have questions, you can reply to this address.


Have a nice day :)

Thomas Hansen CEO at Ra-Software, Inc."], code, cause);
            msg.IsBodyHtml = false;
            SmtpClient smtp = new SmtpClient();
            smtp.Host = smtpServer;
            smtp.Credentials = new NetworkCredential(smtpServerUsername, smtpServerPassword);
            smtp.EnableSsl = smtpServerUseSsl == "True";
            smtp.Send(msg);
        }
Ejemplo n.º 33
0
 public AddPromoCodeResponse AddPromoCode(PromoCode entity)
 {
     var response = client.AddPromoCode(entity);
     return new AddPromoCodeResponse(response);
 }
Ejemplo n.º 34
0
 public EditPromoCodeResponse EditPromoCode(PromoCode entity)
 {
     var response = client.EditPromoCode(entity);
     return new EditPromoCodeResponse(response);
 }