public async Task <IHttpActionResult> Put(string id, NvChuongTrinhKhuyenMaiVm.Dto instance)
        {
            TransferObj <NvChuongTrinhKhuyenMai> result = new TransferObj <NvChuongTrinhKhuyenMai>();
            NvChuongTrinhKhuyenMai check = _service.FindById(instance.Id);

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (check == null)
            {
                return(NotFound());
            }
            //if (id != instance.Id || check.TrangThai == (int)ApprovalState.IsComplete)
            //{
            //    return BadRequest();
            //}

            try
            {
                instance.MaKhoXuat = instance.MaKhoXuatKhuyenMai;
                var item = _service.UpdatePhieu(instance);
                _service.UnitOfWork.Save();
                result.Status = true;
                result.Data   = item;
                return(Ok(result));
            }
            catch (Exception e)
            {
                return(InternalServerError());
            }
        }
        public async Task <IHttpActionResult> GetDetails(string id)
        {
            TransferObj <NvChuongTrinhKhuyenMaiVm.Dto> result = new TransferObj <NvChuongTrinhKhuyenMaiVm.Dto>();

            NvChuongTrinhKhuyenMaiVm.Dto temp = new NvChuongTrinhKhuyenMaiVm.Dto();
            string _parentUnitCode            = _service.GetParentUnitCode();
            NvChuongTrinhKhuyenMai phieu      = _service.FindById(id);

            if (phieu != null)
            {
                temp = Mapper.Map <NvChuongTrinhKhuyenMai, NvChuongTrinhKhuyenMaiVm.Dto>(phieu);
                List <NvChuongTrinhKhuyenMaiChiTiet> tb_ChuongTrinhKhuyenMaiChiTiet = _service.UnitOfWork.Repository <NvChuongTrinhKhuyenMaiChiTiet>().DbSet.ToList();

                List <NvChuongTrinhKhuyenMaiChiTiet> chiTietChuongTrinhKhuyenMai = tb_ChuongTrinhKhuyenMaiChiTiet.Where(x => x.MaChuongTrinh == phieu.MaChuongTrinh).ToList();
                temp.DataDetails = Mapper.Map <List <NvChuongTrinhKhuyenMaiChiTiet>, List <NvChuongTrinhKhuyenMaiVm.DtoDetail> >(chiTietChuongTrinhKhuyenMai);

                foreach (NvChuongTrinhKhuyenMaiVm.DtoDetail tmp in temp.DataDetails)
                {
                    switch (tmp.LoaiChuongTrinh)
                    {
                    case TypePromotion.ByItemGetItem:
                        MdMerchandise hangHoa = _service.UnitOfWork.Repository <MdMerchandise>().DbSet.FirstOrDefault(x => x.MaVatTu == tmp.MaHang);
                        tmp.TenHang = (hangHoa != null ? hangHoa.TenHang : "");
                        break;

                    case TypePromotion.MerchandiseType:
                        MdMerchandiseType loaiHangHoa = _service.UnitOfWork.Repository <MdMerchandiseType>().DbSet.FirstOrDefault(x => x.MaLoaiVatTu == tmp.MaHang);
                        tmp.TenHang = (loaiHangHoa != null ? loaiHangHoa.TenLoaiVatTu : "");
                        break;

                    case TypePromotion.MerchandiseGroup:
                        MdNhomVatTu nhomHangHoa = _service.UnitOfWork.Repository <MdNhomVatTu>().DbSet.FirstOrDefault(x => x.MaNhom == tmp.MaHang);
                        tmp.TenHang = (nhomHangHoa != null ? nhomHangHoa.TenNhom : "");
                        break;

                    case TypePromotion.Sponsor:
                        MdSupplier nhaCungCap = _service.UnitOfWork.Repository <MdSupplier>().DbSet.FirstOrDefault(x => x.MaNCC == tmp.MaHang && x.UnitCode.StartsWith(_parentUnitCode));
                        tmp.TenHang = (nhaCungCap != null ? nhaCungCap.TenNCC : "");
                        break;

                    default:
                        break;
                    }
                }
                result.Data   = temp;
                result.Status = true;
                return(Ok(result));
            }
            return(NotFound());
        }
        public async Task <IHttpActionResult> Post(NvChuongTrinhKhuyenMaiVm.Dto instance)
        {
            TransferObj <NvChuongTrinhKhuyenMai> result = new TransferObj <NvChuongTrinhKhuyenMai>();

            try
            {
                instance.MaKhoXuat = instance.MaKhoXuatKhuyenMai;
                NvChuongTrinhKhuyenMai item = _service.InsertPhieu(instance);
                _service.UnitOfWork.Save();
                result.Data   = item;
                result.Status = true;
                return(CreatedAtRoute("DefaultApi", new { controller = this, id = instance.Id }, result));
            }
            catch (Exception e)
            {
                result.Status  = false;
                result.Message = e.Message;
                return(Ok(result));
            }
        }