Example #1
0
		public bool CanEdit(Comp c)
		{
			if (this.IsAdmin)
				return true;
			if (this.IsEnabledPromoter(c.PromoterK))
				return c.Status.Equals(Comp.StatusEnum.New);

			return false;
		}
		public void PanelEdit_Save(object o, System.EventArgs e)
		{
			EnsureSecure();
			if (Page.IsValid)
			{
				Comp c = null;
				if (Mode.Equals(Modes.Add))
				{
					c = new Comp();
					c.DateTimeAdded = DateTime.Now;
					c.PromoterK = CurrentPromoter.K;
					c.Status = Comp.StatusEnum.New;
				}
				else if (Mode.Equals(Modes.Edit))
				{
					c = CurrentComp;
				}
				c.DisplayType = Comp.DisplayTypes.New;
				c.DateTimeStart = EditDateStart.SelectedDate;
				c.DateTimeClose = new DateTime(EditDateClose.SelectedDate.Year, EditDateClose.SelectedDate.Month, EditDateClose.SelectedDate.Day, 12, 0, 0);
				c.Question = Cambro.Web.Helpers.StripHtml(EditQuestion.Text.Trim()).Truncate(200);
				c.Answer1 = Cambro.Web.Helpers.StripHtml(EditAnswer1.Text.Trim()).Truncate(100);
				c.Answer2 = Cambro.Web.Helpers.StripHtml(EditAnswer2.Text.Trim()).Truncate(100);
				c.Answer3 = Cambro.Web.Helpers.StripHtml(EditAnswer3.Text.Trim()).Truncate(100);
				c.CorrectAnswer = EditCorrectRadio1.Checked ? 1 : (EditCorrectRadio2.Checked ? 2 : 3);
				c.Prize = Cambro.Web.Helpers.StripHtml(EditPrizesFirstDesc.Text.Trim()).Truncate(200);
				c.Prize2 = Cambro.Web.Helpers.StripHtml(EditPrizesSecondDesc.Text.Trim()).Truncate(200);
				c.Prize3 = Cambro.Web.Helpers.StripHtml(EditPrizesThirdDesc.Text.Trim()).Truncate(200);
				c.SponsorDetails = EditSponsorDescriptionHtml.GetHtml();
				try
				{
					c.Winners = int.Parse(EditPrizesFirstNumber.Text.Trim());
				}
				catch
				{
					throw new DsiUserFriendlyException("Number of first prizes must be a number");
				}
				try
				{
					c.Winners2 = EditPrizesSecondNumber.Text.Trim().Equals("") ? 0 : int.Parse(EditPrizesSecondNumber.Text.Trim());
				}
				catch
				{
					throw new DsiUserFriendlyException("Number of second prizes must be a number or blank");
				}
				try
				{
					c.Winners3 = EditPrizesThirdNumber.Text.Trim().Equals("") ? 0 : int.Parse(EditPrizesThirdNumber.Text.Trim());
				}
				catch
				{
					throw new DsiUserFriendlyException("Number of third prizes must be a number or blank");
				}

				Usr u;
				try
				{
					u = new Usr(int.Parse(EditPrizeContact.SelectedValue));
				}
				catch
				{
					throw new DsiUserFriendlyException("Prize contact not valid!");
				}
				if (!u.IsEnabledPromoter(CurrentPromoter.K))
					throw new DsiUserFriendlyException("Prize contact not valid!");
				c.OwnerUsrK = u.K;
				try
				{
					c.PrizeValueRange = int.Parse(EditPrizesValue.SelectedValue);
				}
				catch
				{
					throw new DsiUserFriendlyException("Prize value not valid!");
				}
				if (CurrentEvent != null)
				{
					c.LinkType = Comp.LinkTypes.Event;
					c.BrandK = 0;
					c.EventK = CurrentEvent.K;
				}
				else if (EditLinkNoneRadio.Checked)
				{
					c.LinkType = Comp.LinkTypes.None;
					c.BrandK = 0;
					c.EventK = 0;
				}
				else if (EditLinkEventRadio.Checked)
				{
					c.LinkType = Comp.LinkTypes.Event;
					c.BrandK = 0;
					if (UpcomingEvents.Count == 1)
						c.EventK = UpcomingEvents[0].K;
					else
					{
						Event ev;
						try
						{
							ev = new Event(int.Parse(EditLinkEventDropDown.SelectedValue));
						}
						catch
						{
							throw new DsiUserFriendlyException("Can't use this event!");
						}

						if (!ev.IsPromoter(CurrentPromoter.K))
							throw new DsiUserFriendlyException("Can't use this event!");
						c.EventK = ev.K;
					}
				}
				else if (EditLinkBrandRadio.Checked)
				{
					c.LinkType = Comp.LinkTypes.Brand;
					c.EventK = 0;
					c.BrandK = 0;
					if (CurrentPromoter.AllBrands.Count == 1)
						c.BrandK = CurrentPromoter.AllBrands[0].K;
					else
					{
						Brand b;
						try
						{
							b = new Brand(int.Parse(EditLinkBrandDropDown.SelectedValue));
						}
						catch
						{
							throw new DsiUserFriendlyException("Can't use this brand!");
						}
						if (b.PromoterK != CurrentPromoter.K)
							throw new DsiUserFriendlyException("Can't use this brand!");
						c.BrandK = b.K;
					}
				}
				c.Update();

				if (c.HasPic)
					RedirectDone();
				else
					Response.Redirect(ContainerPage.Url.CurrentUrl("mode", "pic", "compk", c.K.ToString()));

			}
		}