using System;
using System.Collections.Generic;
using System.Linq;
using BLL;
namespace FineUIPro.Web.HJGL.NDT
{
    public partial class RepairNotice : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string ndeItemId = Request.Params["NDEItemID"];
            var q = BLL.Batch_NDEItemService.GetNDEItemViewById(ndeItemId);
            txtPipeCode.Text = q.PipelineCode;
            txtWeldJointCode.Text = q.WeldJointCode;
            txtWelder.Text = q.WelderCode;
            txtJudgeGrade.Text = q.JudgeGrade;
            txtRepairLocation.Text = q.RepairLocation;
            txtCheckDefects.Text = BLL.Base_DefectService.GetDefectNameStrByDefectIdStr(q.CheckDefects);
            var repair = BLL.RepairRecordService.GetRepairRecordByNdeItemId(ndeItemId);
            if (repair == null)
            {
                var mark = from x in BLL.Funs.DB.HJGL_RepairRecord
                           where x.WeldJointId == q.WeldJointId && x.DetectionTypeId == q.DetectionTypeId
                           orderby x.RepairMark descending
                           select x;
                if (mark.Count() == 0)
                {
                    txtRepairMark.Text = "R1";
                }
                else
                {
                    string m = mark.First().RepairMark;
                    string first = m.Substring(0, 1);
                    string last = m.Substring(1, 1);
                    int n = Convert.ToInt32(last) + 1;
                    txtRepairMark.Text = first + n.ToString();
                }
            }
            else
            {
                txtRepairMark.Text = "R1";
                if (!string.IsNullOrEmpty(repair.PhotoUrl))
                {
                    imgPhoto.ImageUrl = repair.PhotoUrl;
                }
            }
        }
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            string ndeItemId = Request.Params["NDEItemID"];
            var q = BLL.Batch_NDEItemService.GetNDEItemViewById(ndeItemId);
            
            var repair = BLL.RepairRecordService.GetRepairRecordByNdeItemId(ndeItemId);
            Model.HJGL_RepairRecord newItem = new Model.HJGL_RepairRecord();
            if (repair == null)
            {
                newItem.RepairRecordId = SQLHelper.GetNewID(typeof(Model.HJGL_RepairRecord));
                string code = q.TrustBatchCode;
                if (code.Substring(code.Length - 2, 1) == "R")
                {
                    string first = code.Substring(0, code.Length - 1);
                    string last = code.Substring(code.Length - 1);
                    int n = Convert.ToInt32(last) + 1;
                    newItem.RepairRecordCode = first + n.ToString();
                }
                else
                {
                    string repairCode = code + "R1";
                    // 当一个委托单有多个返修时会暂时解决返修单重复问题
                    if (BLL.RepairRecordService.IsCoverRecordCode(repairCode))
                    {
                        repairCode = code + "-01R1";
                        if (BLL.RepairRecordService.IsCoverRecordCode(repairCode))
                        {
                            repairCode = code + "-02R1";
                            if (BLL.RepairRecordService.IsCoverRecordCode(repairCode))
                            {
                                repairCode = code + "-03R1";
                            }
                        }
                       
                    }
                    newItem.RepairRecordCode = repairCode;
                }
                newItem.ProjectId = q.ProjectId;
                newItem.UnitId = q.UnitId;
                newItem.UnitWorkId = q.UnitWorkId;
                newItem.NoticeDate = DateTime.Now;
                newItem.NDEItemID = ndeItemId;
                newItem.WeldJointId = q.WeldJointId;
                newItem.DetectionTypeId = q.DetectionTypeId;
                newItem.WelderId = q.BackingWelderId;
                newItem.RepairLocation = q.RepairLocation;
                newItem.CheckDefects = txtCheckDefects.Text;
                newItem.RepairMark = txtRepairMark.Text;
                newItem.PhotoUrl = imgPhoto.ImageUrl;
                BLL.RepairRecordService.AddRepairRecord(newItem);
            }
            else
            {
                repair.CheckDefects = txtCheckDefects.Text;
                repair.RepairMark = txtRepairMark.Text;
                repair.PhotoUrl = imgPhoto.ImageUrl;
                BLL.RepairRecordService.UpdateRepairRecord(repair);
            }
            ShowNotify("生成返修通知单!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #region  上传电子签名图片
        /// 
        /// 上传照片
        /// 
        /// 
        /// 
        protected void filePhoto_FileSelected(object sender, EventArgs e)
        {
            if (filePhoto.HasFile)
            {
                string fileName = filePhoto.ShortFileName;
                if (!ValidateFileType(fileName))
                {
                    ShowNotify("无效的文件类型!");
                    return;
                }
                fileName = fileName.Replace(":", "_").Replace(" ", "_").Replace("\\", "_").Replace("/", "_");
                fileName = DateTime.Now.Ticks.ToString() + "_" + fileName;
                filePhoto.SaveAs(Server.MapPath("~/upload/" + fileName));
                imgPhoto.ImageUrl = "~/upload/" + fileName;
                // 清空文件上传组件
                filePhoto.Reset();
            }
        }
        #endregion 
    }
}