public async Task <IHttpActionResult> Post([FromBody] CreditApprovalRequest data)
        {
            try
            {
                CreditApproval dataCreditApproval = data.GetObject();
                dataCreditApproval.CreatedBy    = GetUserAuth().Id;
                dataCreditApproval.TicketNumber = GetUserAuth().Id.ToString() + ((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds).ToString();
                CreditApproval creditApproval = await _creditApprovalRepository.Create(dataCreditApproval);

                List <TrCaProduct> trCaProducts = new List <TrCaProduct>();
                foreach (int item in data.Products)
                {
                    TrCaProduct newTrCaProduct = new TrCaProduct();
                    newTrCaProduct.CreditApprovalId = creditApproval.Id;
                    newTrCaProduct.ProductId        = item;
                    trCaProducts.Add(newTrCaProduct);
                }
                await _trCaProductRepository.MultipleCreate(trCaProducts);

                return(new HttpJsonApiResult <CreditApprovalModel>(
                           new CreditApprovalModel(creditApproval), Request, HttpStatusCode.Created));
            }
            catch (Exception)
            {
                return(new HttpJsonApiResult <string>(
                           "Internal Server Error", Request, HttpStatusCode.InternalServerError));
            }
        }
 public Task <TrCaProduct> Create(TrCaProduct data)
 {
     return(Task.Run(() =>
     {
         TrCaProduct trCaProduct = _db.TrCaProducts.Add(data);
         _db.SaveChanges();
         return trCaProduct;
     }));
 }
 public Task <TrCaProduct> Delete(int id)
 {
     return(Task.Run(() =>
     {
         TrCaProduct trCaProduct = _db.TrCaProducts.Find(id);
         if (trCaProduct != null)
         {
             _db.TrCaProducts.Remove(trCaProduct);
             _db.SaveChanges();
         }
         return trCaProduct;
     }));
 }
        public async Task <IHttpActionResult> Update(int id, [FromBody] CreditApprovalRequest data)
        {
            try
            {
                CreditApproval creditApproval = await _creditApprovalRepository.Update(id, data.GetObject());

                if (creditApproval != null)
                {
                    if (data.Products != null || data.Products.Count() != 0)
                    {
                        bool isDeleted = await _trCaProductRepository.DeleteByCreditId(id);

                        if (isDeleted)
                        {
                            List <TrCaProduct> trCaProducts = new List <TrCaProduct>();
                            foreach (int item in data.Products)
                            {
                                TrCaProduct newTrCaProduct = new TrCaProduct();
                                newTrCaProduct.CreditApprovalId = id;
                                newTrCaProduct.ProductId        = item;
                                trCaProducts.Add(newTrCaProduct);
                            }
                            await _trCaProductRepository.MultipleCreate(trCaProducts);
                        }
                    }
                    return(new HttpJsonApiResult <CreditApprovalModel>(
                               new CreditApprovalModel(creditApproval), Request, HttpStatusCode.OK));
                }
                return(new HttpJsonApiResult <string>("Not Found", Request, HttpStatusCode.NotFound));
            }
            catch (Exception)
            {
                return(new HttpJsonApiResult <string>(
                           "Internal Server Error", Request, HttpStatusCode.InternalServerError));
            }
        }