Esempio n. 1
0
        public async Task <IActionResult> Add(CreateCampaignViewModel model)
        {
            Campaign campaign = new Campaign {
                Name = model.Name, Description = model.Info, FinishDate = model.FinishDate, CreateDate = DateTimeOffset.Now, ColectedSum = 0, Image = model.Img, Sum = model.Sum, User = await _userManager.GetUserAsync(User), Video = model.Video, Theme = db.Themes.FirstOrDefault(t => t.Name == model.Theme)
            };
            await db.Campaigns.AddAsync(campaign);

            var        modelTags = model.Tags.Split(' ', StringSplitOptions.RemoveEmptyEntries);
            Tag        tag       = null;
            List <Tag> tagList   = new List <Tag>();

            foreach (var item in modelTags)
            {
                tag = await db.Tag.FirstOrDefaultAsync(t => t.value == item);

                if (tag == null)
                {
                    tag = new Tag {
                        value = item
                    };
                    await db.Tag.AddAsync(tag);
                }
                tagList.Add(tag);
            }
            List <CampaignTag> ctList = tagList.Select(t => new CampaignTag {
                Tag = t, Campaign = campaign
            }).ToList();
            await db.CampaignTags.AddRangeAsync(ctList);

            await db.SaveChangesAsync();

            return(RedirectToAction("Index", "Profile"));
        }
Esempio n. 2
0
        public IActionResult Edit(int id)
        {
            var    campaign  = db.Campaigns.Include(c => c.Theme).Include(c => c.Tags).ThenInclude(t => t.Tag).FirstOrDefault(c => c.Id == id);
            string tagstring = "";

            foreach (var tag in campaign.Tags)
            {
                tagstring += tag.Tag.value + ' ';
            }
            CreateCampaignViewModel model = new CreateCampaignViewModel
            {
                Id         = campaign.Id,
                Name       = campaign.Name,
                FinishDate = campaign.FinishDate,
                Img        = campaign.Image,
                Info       = campaign.Description,
                Sum        = campaign.Sum,
                Theme      = campaign.Theme.Name,
                Themes     = db.Themes.Select(t => t.Name).ToList(),
                Video      = campaign.Video,
                Tags       = tagstring
            };

            return(View(model));
        }
Esempio n. 3
0
        public async Task <int> CreateCampaign(int agencyid, CreateCampaignViewModel model, string username)
        {
            var campaignTypeCharge = await _campaignTypeChargeRepository.GetSingleBySpecAsync(new CampaignTypeChargeSpecification(model.Type));

            if (campaignTypeCharge == null)
            {
                return(-1);
            }
            var settings = await _settingRepository.GetSetting();

            // var wallet = await _walletRepository.GetBalance(EntityType.Agency, agencyid);
            var code = await _campaignRepository.GetValidCode(agencyid);

            var campaign = model.GetEntity(agencyid, campaignTypeCharge, settings, code, username);

            if (campaign == null)
            {
                return(-1);
            }

            await _campaignRepository.AddAsync(campaign);

            if (campaign.Id > 0)
            {
                await CreateCampaignAccountType(campaign.Id, model.AccountType, username);
                await CreateCampaignOptions(campaign.Id, model, username);

                return(campaign.Id);
            }

            return(-1);
        }
Esempio n. 4
0
        public void OnGet()
        {
            Campaign = new CreateCampaignViewModel();

            var groupLookup = _contactAppService.GetGroupLookupAsync().Result;

            Groups = groupLookup.Items.Select(x => new SelectListItem(x.Name, x.Id.ToString())).ToList();
        }
Esempio n. 5
0
        public IActionResult Add()
        {
            CreateCampaignViewModel model = new CreateCampaignViewModel {
                Themes = db.Themes.Select(t => t.Name).ToList()
            };

            return(View(model));
        }
        public async Task <IActionResult> Create(CreateCampaignViewModel model)
        {
            var campaign = model.Campaign;

            campaign.ImageGalleryUrl = UploadImage(model.Image);
            campaign.Creator         = await userManager.GetUserAsync(User);

            _campaignRepository.Add(campaign);
            return(RedirectToAction("campaign", new { Id = campaign.Id }));
        }
 public ActionResult Edit(CreateCampaignViewModel model)
 {
     using (var db = new ApplicationDbContext())
     {
         var campaign = GetCampaignModel(model, db);
         db.CampaignModels.AddOrUpdate(campaign);
         db.SaveChanges();
         return(RedirectToAction("Details", "Campaign", new { id = model.Id }));
     }
 }
Esempio n. 8
0
        public IActionResult Create()
        {
            var createVm = new CreateCampaignViewModel
            {
                Campaign   = new Campaign(),
                Categories = _context.Categories.ToList()
            };

            return(View(createVm));
        }
Esempio n. 9
0
        public ActionResult Campaign(CreateCampaignViewModel campaign)
        {
            if (ModelState.IsValid)
            {
                var newCampaign = _campaignService.CreateCampaign(campaign.Name, campaign.Description);

                return(Json(new { state = "Success", additional = Url.Action("Campaign", new { id = newCampaign.CampaignId }) }));
            }

            return(Json(new { state = "Fail", additional = "Need to fill in all data" }));
        }
        private CreateCampaignViewModel EditCampaign(CampaignModel campaign)
        {
            var temp = new CreateCampaignViewModel
            {
                Name        = campaign.Name,
                Description = campaign.Description,
                Sum         = campaign.RequiredSum,
                CreatedOn   = campaign.CreatedOn
            };

            return(temp);
        }
        public ActionResult Create(CreateCampaignViewModel model)
        {
            using (var db = new ApplicationDbContext())
            {
                var campaignModel = GetCampaignModel(model, db);
                campaignModel.CreatedOn = DateTime.Now;
                db.CampaignModels.Add(campaignModel);
                db.SaveChanges();
            }

            return(RedirectToAction("CampaignList", "Campaign"));
        }
        public async Task OnGetAsync(int?id)
        {
            if (id.HasValue)
            {
                var camp = await _campaignFacade.GetByIdAsync(id.Value);

                CreateCampaign = new CreateCampaignViewModel {
                    Id       = camp.Id,
                    DateTime = camp.DateTime,
                    Name     = camp.Name,
                    Place    = camp.Place
                };
            }
            Campaigns = await _campaignFacade.ListAllAsync();
        }
        public ActionResult Create(CreateCampaignViewModel campaign)
        {
            if (campaign != null && ModelState.IsValid)
            {
                var dbCampaign = Mapper.Map <Campaign>(campaign);
                dbCampaign.AuthorId  = this.CurrentUser.Id;
                dbCampaign.CreatedOn = DateTime.Now;

                this.Data.Campaigns.Add(dbCampaign);
                this.Data.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(View(campaign));
        }
        private CampaignModel GetCampaignModel(CreateCampaignViewModel model, ApplicationDbContext db)
        {
            var ownerId   = model.OwnerId ?? User.Identity.GetUserId();
            var ownerName = db.Users.SingleOrDefault(x => x.Id == ownerId)?.UserName;

            return(new CampaignModel
            {
                Id = model.Id,
                Name = model.Name,
                Description = model.Description,
                RequiredSum = model.Sum,
                OwnerName = ownerName,
                OwnerId = ownerId,
                ImageUrl = model.ImageUrl,
                CreatedOn = model.CreatedOn
            });
        }
Esempio n. 15
0
        public async Task <IActionResult> Edit(CreateCampaignViewModel model)
        {
            var campaign = await db.Campaigns.Include(c => c.Theme).Include(c => c.Tags).FirstOrDefaultAsync(c => c.Id == model.Id);

            campaign.Name        = model.Name;
            campaign.FinishDate  = model.FinishDate;
            campaign.Image       = model.Img;
            campaign.Description = model.Info;
            campaign.Sum         = model.Sum;
            campaign.Theme       = await db.Themes.FirstOrDefaultAsync(c => c.Name == model.Theme);

            campaign.Video = model.Video;
            var        modelTags = model.Tags.Split(' ', StringSplitOptions.RemoveEmptyEntries);
            Tag        tag       = null;
            List <Tag> tagList   = new List <Tag>();

            foreach (var item in modelTags)
            {
                tag = await db.Tag.FirstOrDefaultAsync(t => t.value == item);

                if (tag == null)
                {
                    tag = new Tag {
                        value = item
                    };
                    await db.Tag.AddAsync(tag);
                }
                tagList.Add(tag);
            }
            List <CampaignTag> ctList = tagList.Select(t => new CampaignTag {
                Tag = t, Campaign = campaign
            }).ToList();
            await db.CampaignTags.AddRangeAsync(ctList);

            db.Update(campaign);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index", "Profile"));
        }
        public ActionResult Create(CreateCampaignViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(model));
            }

            if (model.GoalPrice % 10 != 0)
            {
                this.ModelState.AddModelError(string.Empty, "Goal Price must be divisible by 10");
                return(this.View(model));
            }

            if (model.Shares % 5 != 0)
            {
                this.ModelState.AddModelError(string.Empty, "Shares must be divisible by 5");
                return(this.View(model));
            }

            var currentUserId = this.User.Identity.GetUserId();
            var currentUser   = this.users.GetById(currentUserId);

            var campaign = new Campaign
            {
                Name            = model.Name,
                User            = currentUser,
                Description     = model.Description,
                GoalPrice       = model.GoalPrice,
                TotalShares     = model.Shares,
                AvailableShares = model.Shares
            };

            this.campaigns.Add(campaign);
            this.campaigns.SaveChanges();

            return(this.RedirectToAction("Index", "Home"));
        }
Esempio n. 17
0
        private async Task CreateCampaignOptions(int campaignId, CreateCampaignViewModel model, string username)
        {
            if (model.AccountType.Contains(AccountType.HotMom))
            {
                if (model.ChildType.HasValue)
                {
                    await _campaignOptionRepository.AddAsync(new CampaignOption()
                    {
                        CampaignId = campaignId,
                        Name       = CampaignOptionName.Child,
                        Value      = $"{model.ChildType}|{model.ChildAgeMin}-{model.ChildAgeMax}"
                    });
                }
            }

            if (model.EnabledCity && model.CityId != null && model.CityId.Count > 0)
            {
                foreach (var cityId in model.CityId)
                {
                    await _campaignOptionRepository.AddAsync(new CampaignOption()
                    {
                        CampaignId = campaignId,
                        Name       = CampaignOptionName.City,
                        Value      = cityId.ToString()
                    });
                }
            }
            if (model.EnabledGender && model.Gender.HasValue)
            {
                await _campaignOptionRepository.AddAsync(new CampaignOption()
                {
                    CampaignId = campaignId,
                    Name       = CampaignOptionName.Gender,
                    Value      = model.Gender.Value.ToString()
                });
            }

            if (model.EnabledAgeRange && model.AgeEnd.HasValue && model.AgeStart.HasValue)
            {
                await _campaignOptionRepository.AddAsync(new CampaignOption()
                {
                    CampaignId = campaignId,
                    Name       = CampaignOptionName.AgeRange,
                    Value      = $"{model.AgeStart.Value}-{model.AgeEnd.Value}"
                });
            }

            if (model.EnabledCategory && model.CategoryId != null && model.CategoryId.Count > 0)
            {
                foreach (var categoryid in model.CategoryId)
                {
                    await _campaignOptionRepository.AddAsync(new CampaignOption()
                    {
                        CampaignId = campaignId,
                        Name       = CampaignOptionName.Category,
                        Value      = categoryid.ToString()
                    });
                }
            }
            if (model.EnabledTags && model.AccountTags != null && model.AccountTags.Count > 0)
            {
                foreach (var tag in model.AccountTags)
                {
                    await _campaignOptionRepository.AddAsync(new CampaignOption()
                    {
                        CampaignId = campaignId,
                        Name       = CampaignOptionName.Tags,
                        Value      = tag
                    });
                }
            }
        }
Esempio n. 18
0
        public async Task <IActionResult> Create(CreateCampaignViewModel model, int submittype = 0)
        {
            var error = "";

            if (ModelState.IsValid)
            {
                var valid = true;

                if (model.Method == CampaignMethod.ChooseAccount)
                {
                    if (model.AccountType.Contains(AccountType.Regular))
                    {
                        //generate accountids

                        var matchedAccountIds           = new List <int>();
                        var matchedAccountChargeAmounts = new List <int>();
                        var matchedAccounts             = await _accountService.GetListAccount(model.AccountType, model.CategoryId, model.Gender, model.CityId, model.AgeStart, model.AgeEnd, string.Empty, 1, model.Quantity, null, 0, 0);

                        foreach (var matchedAccount in matchedAccounts.Accounts)
                        {
                            matchedAccountIds.Add(matchedAccount.Id);
                            matchedAccountChargeAmounts.Add(0);
                        }
                        model.AccountIds           = matchedAccountIds;
                        model.AccountChargeAmounts = matchedAccountChargeAmounts;
                    }



                    if (model.AccountType == null || model.AccountType.Count == 0)
                    {
                        valid = false;
                        error = "Hãy chọn đối tượng ";
                    }
                    else if (model.AccountIds == null || model.AccountIds.Count == 0 || model.AccountIds.Count != model.AccountChargeAmounts.Count)
                    {
                        valid = false;
                        error = "Không có Kol phù hợp. Vui lòng chộn các tiêu chí khác";
                    }
                }
                else
                {
                    model.AccountIds           = new List <int>();
                    model.AccountChargeAmounts = new List <int>();
                }

                if (valid)
                {
                    if (!string.IsNullOrEmpty(model.Image))
                    {
                        model.Image = _fileHelper.MoveTempFile(model.Image, "campaign");
                    }
                    var id = await _campaignService.CreateCampaign(CurrentUser.Id, model, CurrentUser.Username);

                    if (id > 0)
                    {
                        for (var i = 0; i < model.AccountIds.Count; i++)
                        {
                            var amount = model.AccountType.Contains(AccountType.Regular) ? model.AccountChargeAmount ?? 0 : model.AccountChargeAmounts[i];
                            BackgroundJob.Enqueue <ICampaignService>(m => m.CreateCampaignAccount(CurrentUser.Id, id, model.AccountIds[i], amount, CurrentUser.Username));
                        }
                        return(Json(new
                        {
                            status = 1,
                            message = "Thêm chiến dịch mới thành công",
                            campaignid = id,
                            url = Url.Action("Details", new { id = id })
                        }));
                    }
                    else
                    {
                        error = "Lỗi khi khởi tạo chiến dịch. Vui lòng thử lại";
                    }
                }
            }
            return(Json(new
            {
                status = -1,
                message = error
            }));
            //await ViewbagData();
            //return View(model);
        }
Esempio n. 19
0
        public CreateCampaignPage(int orgId)
        {
            var viewModel = new CreateCampaignViewModel(Navigation, orgId);

            BindingContext = viewModel;

            var campaignName = new Entry {
                Placeholder = "Campaign Name"
            };

            campaignName.SetBinding(Entry.TextProperty, CreateCampaignViewModel.CampaignNamePropertyName);

            var campaignDescription = new Entry {
                Placeholder = "Description"
            };

            campaignDescription.SetBinding(Entry.TextProperty, CreateCampaignViewModel.CampaignDescriptionPropertyName);

            var targetDateLabel = new Label
            {
                Text = "Target Date",
                HorizontalOptions = LayoutOptions.Center
            };

            var campaignTargetDate = new DatePicker
            {
                Format = "D"
            };

            campaignTargetDate.SetBinding(DatePicker.DateProperty, CreateCampaignViewModel.CampaignTargetDatePropertyName);

            var campaignImage = new Label();
            var imgButton     = new Button
            {
                Text = "Upload Image"
            };

            imgButton.Clicked += async(sender, e) =>
            {
                var imgPath = App.MediaPicker.GetImage();
                campaignImage.Text = imgPath;
            };

            var targetLabel = new Label {
                Text = "Target Amount", HorizontalOptions = LayoutOptions.Center
            };

            _campaignTargetLabel = new Label
            {
                Text              = String.Format("{0}", _minCampaignTarget.ToString("C", CultureInfo.CurrentCulture)),
                TextColor         = Color.FromHex("f79848"),
                Font              = Font.SystemFontOfSize(50, FontAttributes.Bold),
                HorizontalOptions = LayoutOptions.Center
            };

            var campaignTarget = new Slider
            {
                Maximum = 5000,
                Minimum = _minCampaignTarget
            };

            campaignTarget.ValueChanged += async(sender, e) =>
            {
                _campaignTargetLabel.Text       = String.Format("{0}", e.NewValue.ToString("C", CultureInfo.CurrentCulture));
                viewModel.CampaignTargetAmmount = e.NewValue;
            };

            var button = new DefaultButton
            {
                Text            = "CREATE CAMPAIGN",
                VerticalOptions = LayoutOptions.End
            };

            button.SetBinding(Button.CommandProperty, CreateCampaignViewModel.AddCommandPropertyName);

            var layout = new StackLayout
            {
                Children =
                {
                    campaignName,
                    campaignDescription,
                    targetDateLabel,
                    campaignTargetDate,
                    campaignImage,
                    imgButton,
                    targetLabel,
                    _campaignTargetLabel,
                    campaignTarget,
                    button
                }
            };

            Content = new ScrollView
            {
                Content = layout
            };
        }