public IHttpActionResult PostAPIVoucherUpdateControl([FromBody] APIVoucherUpdateControls dto)
        {
            try
            {
                EventLogger.Log("APIVoucherUpdate.PostAPIVoucherUpdateControl", "PostAPIVoucherUpdateControl", EventLogger.Event.START, "PostAPIVoucherUpdateControl method called :");
                if (!ModelState.IsValid)
                {
                    //return BadRequest(ModelState);
                    return(Ok(new ResponseStatus()
                    {
                        status = "400", message = "documentnumber or invoicenumber missing in request body"
                    }));
                }

                BO_PAYABLES    dbDtoPayaBles;
                BO_RECEIVABLES dbDtoReceivables;

                GetData(dto, out dbDtoPayaBles, out dbDtoReceivables);

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateException ex)
                {
                    throw ex;
                }
                if (dbDtoPayaBles == null && dbDtoReceivables == null)
                {
                    return(Ok(new ResponseStatus()
                    {
                        status = "501", message = "Key data is not present in BO_PAYABLES & BO_RECEIVABLES"
                    }));
                }
            }
            catch (Exception ex)
            {
                EventLogger.Log("APIVoucherUpdate.PostAPIVoucherUpdateControl", "Exception", EventLogger.Event.END, "PostAPIVoucherUpdateControl method called :" + ex.Message);
                return(Ok(new ResponseStatus()
                {
                    status = "500", message = "DB connection failed"
                }));
            }

            EventLogger.Log("APIVoucherUpdate.PostAPIVoucherUpdateControl", "PostAPIVoucherUpdateControl", EventLogger.Event.END, "PostAPIVoucherUpdateControl method called :");
            return(Ok(new ResponseStatus()
            {
                status = "200", message = "Voucher Updated Successfully"
            }));
        }
        private void GetData(APIVoucherUpdateControls dto, out BO_PAYABLES dbDtoPayaBles, out BO_RECEIVABLES dbDtoReceivables)
        {
            EventLogger.Log("APIVoucherUpdate.PostAPIVoucherUpdateControl", "PostAPIVoucherUpdateControl", EventLogger.Event.START, "PostAPIVoucherUpdateControl method called :" + dto.documentnumber + "," + dto.invoicenumber);
            APIVoucherUpdateControls dtoToBeSaved = db.APIVoucherUpdateControls.Find(dto.documentnumber, dto.invoicenumber);

            EventLogger.Log("APIVoucherUpdate.PostAPIVoucherUpdateControl", "PostAPIVoucherUpdateControl", EventLogger.Event.END, "PostAPIVoucherUpdateControl method called :" + dto.documentnumber + "," + dto.invoicenumber);

            string separator   = ConfigurationManager.AppSettings["Separator"].ToString();
            string tran_id     = dto.documentnumber;
            string payables_id = dto.invoicenumber.Split(separator[0])[0];
            string part_srl_id = dto.invoicenumber.Split(separator[0])[1];

            dbDtoPayaBles    = (from records in db.BO_PAYABLES select records).Where(y => y.TRAN_ID == tran_id && y.PAYABLES_ID == payables_id && y.PART_SRL_ID == part_srl_id).FirstOrDefault();
            dbDtoReceivables = (from records in db.BO_RECEIVABLES select records).Where(y => y.TRAN_ID == tran_id && y.RECEIVABLES_ID == payables_id && y.PART_SRL_ID == part_srl_id).FirstOrDefault();
            if (dbDtoPayaBles != null || dbDtoReceivables != null)
            {
                dto.IsDataValid = "Y";
            }


            if (dbDtoPayaBles != null)
            {
                dto.PAYorREC = "PAY";
                dto.PayablesID_ReceivablesID = dbDtoPayaBles.PAYABLES_ID;
                dto.PartSrlNo = dbDtoPayaBles.PART_SRL_ID;
                dto.TranID    = dbDtoPayaBles.TRAN_ID;
                dto.TranType  = dbDtoPayaBles.TRAN_TYPE;
            }
            if (dbDtoReceivables != null)
            {
                dto.PAYorREC = "REC";
                dto.PayablesID_ReceivablesID = dbDtoReceivables.RECEIVABLES_ID;
                dto.PartSrlNo = dbDtoReceivables.PART_SRL_ID;
                dto.TranID    = dbDtoReceivables.TRAN_ID;
                dto.TranType  = dbDtoReceivables.TRAN_TYPE;
            }

            if (dtoToBeSaved != null)
            {
                db.Entry(dtoToBeSaved).CurrentValues.SetValues(dto);
                db.Entry(dtoToBeSaved).State = EntityState.Modified;
            }
            else
            {
                db.APIVoucherUpdateControls.Add(dto);
            }
        }