public IHttpActionResult Update(int id, DTO.CreditNoteMng.CreditNote dtoItem)
        {
            Library.DTO.Notification notification;

            // authentication
            Module.Framework.BLL fwBll = new Module.Framework.BLL();
            if (id > 0 && !fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanUpdate))
            {
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }
            else if (id == 0 && !fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanCreate))
            {
                return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
            }
            // validation
            if (!Helper.CommonHelper.ValidateDTO <DTO.CreditNoteMng.CreditNote>(dtoItem, out notification))
            {
                return(Ok(new Library.DTO.ReturnData <DTO.CreditNoteMng.CreditNote>()
                {
                    Data = dtoItem, Message = notification
                }));
            }
            // save data
            BLL.CreditNoteMng bll = new BLL.CreditNoteMng();
            bll.UpdateData(id, ref dtoItem, ControllerContext.GetAuthUserId(), out notification);
            return(Ok(new Library.DTO.ReturnData <DTO.CreditNoteMng.CreditNote>()
            {
                Data = dtoItem, Message = notification
            }));
        }
 public IHttpActionResult Get(int id, int eCommercialInvoiceID)
 {
     //authentication
     Module.Framework.BLL fwBll = new Module.Framework.BLL();
     if (!fwBll.CanPerformAction(ControllerContext.GetAuthUserId(), moduleCode, Library.DTO.ModuleAction.CanRead))
     {
         return(InternalServerError(new Exception(Properties.Resources.NOT_AUTHORIZED)));
     }
     BLL.CreditNoteMng            bll = new BLL.CreditNoteMng();
     Library.DTO.Notification     notification;
     DTO.CreditNoteMng.CreditNote data = bll.GetEditData(id, eCommercialInvoiceID, ControllerContext.GetAuthUserId(), out notification);
     return(Ok(new Library.DTO.ReturnData <DTO.CreditNoteMng.CreditNote>()
     {
         Data = data, Message = notification
     }));
 }
        public void DTO2DB_CreditNote(DTO.CreditNoteMng.CreditNote dtoItem, ref CreditNote dbItem)
        {
            //CreditNote Detail
            List <CreditNoteDetail> item_tobedeleted = new List <CreditNoteDetail>();

            if (dtoItem.CreditNoteDetails != null)
            {
                //CHECK
                foreach (var dbDetail in dbItem.CreditNoteDetail.Where(o => !dtoItem.CreditNoteDetails.Select(s => s.CreditNoteDetailID).Contains(o.CreditNoteDetailID)))
                {
                    item_tobedeleted.Add(dbDetail);
                }
                foreach (var dbDetail in item_tobedeleted)
                {
                    dbItem.CreditNoteDetail.Remove(dbDetail);
                }
                //MAP
                foreach (var dtoDetail in dtoItem.CreditNoteDetails)
                {
                    CreditNoteDetail dbDetail;
                    if (dtoDetail.CreditNoteDetailID < 0)
                    {
                        dbDetail = new CreditNoteDetail();
                        dbItem.CreditNoteDetail.Add(dbDetail);
                    }
                    else
                    {
                        dbDetail = dbItem.CreditNoteDetail.FirstOrDefault(o => o.CreditNoteDetailID == dtoDetail.CreditNoteDetailID);
                    }

                    if (dbDetail != null)
                    {
                        AutoMapper.Mapper.Map <DTO.CreditNoteMng.CreditNoteDetail, CreditNoteDetail>(dtoDetail, dbDetail);
                    }
                }
            }
            //CreditNote Product Detail
            List <CreditNoteProductDetail> product_tobedeleted = new List <CreditNoteProductDetail>();

            if (dtoItem.CreditNoteProductDetails != null)
            {
                //CHECK
                foreach (var dbDetail in dbItem.CreditNoteProductDetail.Where(o => !dtoItem.CreditNoteProductDetails.Select(s => s.CreditNoteProductDetailID).Contains(o.CreditNoteProductDetailID)))
                {
                    product_tobedeleted.Add(dbDetail);
                }
                foreach (var dbDetail in product_tobedeleted)
                {
                    dbItem.CreditNoteProductDetail.Remove(dbDetail);
                }
                //MAP
                foreach (var dtoDetail in dtoItem.CreditNoteProductDetails)
                {
                    CreditNoteProductDetail dbDetail;
                    if (dtoDetail.CreditNoteProductDetailID < 0)
                    {
                        dbDetail = new CreditNoteProductDetail();
                        dbItem.CreditNoteProductDetail.Add(dbDetail);
                    }
                    else
                    {
                        dbDetail = dbItem.CreditNoteProductDetail.FirstOrDefault(o => o.CreditNoteProductDetailID == dtoDetail.CreditNoteProductDetailID);
                    }

                    if (dbDetail != null)
                    {
                        AutoMapper.Mapper.Map <DTO.CreditNoteMng.CreditNoteProductDetail, CreditNoteProductDetail>(dtoDetail, dbDetail);
                    }
                }
            }

            //CreditNote Sparepart Detail
            List <CreditNoteSparepartDetail> sparepart_tobedeleted = new List <CreditNoteSparepartDetail>();

            if (dtoItem.CreditNoteSparepartDetails != null)
            {
                //CHECK
                foreach (var dbDetail in dbItem.CreditNoteSparepartDetail.Where(o => !dtoItem.CreditNoteSparepartDetails.Select(s => s.CreditNoteSparepartDetailID).Contains(o.CreditNoteSparepartDetailID)))
                {
                    sparepart_tobedeleted.Add(dbDetail);
                }
                foreach (var dbDetail in sparepart_tobedeleted)
                {
                    dbItem.CreditNoteSparepartDetail.Remove(dbDetail);
                }
                //MAP
                foreach (var dtoDetail in dtoItem.CreditNoteSparepartDetails)
                {
                    CreditNoteSparepartDetail dbDetail;
                    if (dtoDetail.CreditNoteSparepartDetailID < 0)
                    {
                        dbDetail = new CreditNoteSparepartDetail();
                        dbItem.CreditNoteSparepartDetail.Add(dbDetail);
                    }
                    else
                    {
                        dbDetail = dbItem.CreditNoteSparepartDetail.FirstOrDefault(o => o.CreditNoteSparepartDetailID == dtoDetail.CreditNoteSparepartDetailID);
                    }

                    if (dbDetail != null)
                    {
                        AutoMapper.Mapper.Map <DTO.CreditNoteMng.CreditNoteSparepartDetail, CreditNoteSparepartDetail>(dtoDetail, dbDetail);
                    }
                }
            }

            //CreditNote
            AutoMapper.Mapper.Map <DTO.CreditNoteMng.CreditNote, CreditNote>(dtoItem, dbItem);
            if (dtoItem.CreditNoteID > 0)
            {
                dbItem.UpdatedDate = DateTime.Now;
                dbItem.UpdatedBy   = dtoItem.UpdatedBy;
            }
            else
            {
                dbItem.CreatedDate = DateTime.Now;
                dbItem.CreatedBy   = dtoItem.UpdatedBy;
                dbItem.UpdatedDate = DateTime.Now;
                dbItem.UpdatedBy   = dtoItem.UpdatedBy;
            }
            dbItem.InvoiceDate = dtoItem.InvoiceDate.ConvertStringToDateTime();
        }
 public DTO.CreditNoteMng.CreditNote DB2DTO_CreditNote(CreditNoteMng_CreditNote_View dbItem)
 {
     DTO.CreditNoteMng.CreditNote dtoItem = AutoMapper.Mapper.Map <CreditNoteMng_CreditNote_View, DTO.CreditNoteMng.CreditNote>(dbItem);
     return(dtoItem);
 }