using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using FLocal.Common.dataobjects;

namespace FLocal.IISHandler.handlers.request {
	class PunishHandler : AbstractPostHandler {

		protected override string templateName {
			get {
				return "result/MessagePunished.xslt";
			}
		}

		protected override XElement[] Do(WebContext context) {

			Post post = Post.LoadById(int.Parse(context.httprequest.Form["postId"]));
			XElement postXml = post.exportToXml(context);
			post.Punish(
				context.session.account,
				PunishmentType.LoadById(int.Parse(context.httprequest.Form["punishmentTypeId"])),
				context.httprequest.Form["comment"].Trim(),
				(context.httprequest.Form["transfer"] == "transfer")
					?
					(PunishmentTransfer.NewTransferInfo?)new PunishmentTransfer.NewTransferInfo(Board.LoadById(int.Parse(context.httprequest.Form["transfer_boardId"])), context.httprequest.Form["transfer_subThread"] == "transfer_subThread")
					:
					null,
				(context.httprequest.Form["layerChange"] == "layerChange")
					?
					(PunishmentLayerChange.NewLayerChangeInfo?)new PunishmentLayerChange.NewLayerChangeInfo(PostLayer.LoadById(int.Parse(context.httprequest.Form["layerChange_layerId"])), context.httprequest.Form["layerChange_subThread"] == "layerChange_subThread")
					:
					null
			);
			
			return new XElement[] {
				post.thread.board.exportToXml(context, Board.SubboardsOptions.None),
				postXml
			};
		}

	}
}
