public ActionResponse <ProductDTO> SaveProduct(ProductDTO model) { ActionResponse <ProductDTO> response = new ActionResponse <ProductDTO>() { Response = model, ResponseType = ResponseType.Ok }; using (MspDbContext _db = new MspDbContext()) { try { if (response.Response.PID == 0) { if (model.PBarcode.Length > 0) { var barcodControl = _db.products.Where(x => x.PBarcode == model.PBarcode).Any(); if (barcodControl) { response.Message = model.PName + " " + model.PBarcode + " Aynı Barkod Ürününden Mevcuttur."; response.ResponseType = ResponseType.Error; return(response); } } var product = base.Map <ProductDTO, Products>(response.Response); _db.products.Add(product); _db.SaveChanges(); response.Response.PID = product.PID; if (model.PBarcode.Length > 0) { ProductBarCodeDTO productBarCode = new ProductBarCodeDTO { Barcode = model.PBarcode, ProductId = product.PID, CompanyRecId = product.PCompanyId, Remark = product.PName }; _db.ProductBarCode.Add(base.Map <ProductBarCodeDTO, ProductBarCode>(productBarCode)); _db.SaveChanges(); } ProductMovementDTO productMovement = new ProductMovementDTO { ProductId = product.PID, Date = DateTime.Now, Quantity = Convert.ToInt32(model.PTotal.GetValueOrDefault()), Durum = "Stok Giriş", Deleted = false, Amount = model.PSalePrice, }; _db.ProductMovement.Add(base.Map <ProductMovementDTO, ProductMovement>(productMovement)); _db.SaveChanges(); } else { var entity = _db.products.FirstOrDefault(x => x.PID == response.Response.PID); if (entity != null) { _db.Entry(entity).CurrentValues.SetValues(model); _db.Entry(entity).State = System.Data.Entity.EntityState.Modified; } var _ProductBarcode = _db.ProductBarCode.FirstOrDefault(x => x.ProductId == response.Response.PID); if (_ProductBarcode != null) { _ProductBarcode.Barcode = response.Response.PBarcode; _db.Entry(_ProductBarcode).CurrentValues.SetValues(_ProductBarcode); _db.Entry(_ProductBarcode).State = System.Data.Entity.EntityState.Modified; } else { if (model.PBarcode.Length > 0) { ProductBarCodeDTO productBarCode = new ProductBarCodeDTO { Barcode = model.PBarcode, ProductId = entity.PID, CompanyRecId = entity.PCompanyId, Remark = entity.PName }; _db.ProductBarCode.Add(base.Map <ProductBarCodeDTO, ProductBarCode>(productBarCode)); _db.SaveChanges(); } } } _db.SaveChanges(); } catch (Exception e) { response.Message = e.ToString(); response.ResponseType = ResponseType.Error; } } return(response); }
public ActionResponse <SaleRequest> Save_Sale(SaleRequest model) { ActionResponse <SaleRequest> response = new ActionResponse <SaleRequest>() { Response = model, ResponseType = ResponseType.Ok }; using (MspDbContext _db = new MspDbContext()) { using (DbContextTransaction transaction = _db.Database.BeginTransaction()) { try { int saleOwnerId = 0; if (response.Response.SaleOwnerDTO.RecId == 0) { SaleOwner saleOwner = base.Map <SaleOwnerDTO, SaleOwner>(model.SaleOwnerDTO); _db.SaleOwner.Add(saleOwner); _db.SaveChanges(); saleOwnerId = saleOwner.RecId; if (saleOwner.Veresiye != true) { CaseMovementDTO caseMovement = new CaseMovementDTO() { CaseId = model.SaleOwnerDTO.CaseId, Doviz = model.SaleOwnerDTO.DovizId, RecordDate = model.SaleOwnerDTO.Date, Tutar = model.SaleOwnerDTO.TotalPrice, OdemeTuru = model.SaleOwnerDTO.PaymentType, CompanyRecId = model.SaleOwnerDTO.CompanyRecId, EvrakNo = "Parakende Satış", IslemTuru = 1, SaleOwnerId = saleOwnerId, CariId = 1 }; _db.CaseMovement.Add(base.Map <CaseMovementDTO, CaseMovement>(caseMovement)); _db.SaveChanges(); } } else { var entity = _db.SaleOwner.FirstOrDefault(x => x.RecId == response.Response.SaleOwnerDTO.RecId); if (entity != null) { _db.Entry(entity).CurrentValues.SetValues(model.SaleOwnerDTO); _db.Entry(entity).State = System.Data.Entity.EntityState.Modified; } } foreach (var item in model.List_SaleTrans) { if (item.RecId == 0) { item.SaleOwnerId = saleOwnerId; _db.SaleTrans.Add(base.Map <SaleTransDTO, SaleTrans>(item)); var product = _db.products.FirstOrDefault(x => x.PID == item.ProductId); if (product != null) { Products updatePro = new Products(); updatePro = product; updatePro.PTotal = updatePro.PTotal - item.ProductQuantity; var sqlUpdate = $"Update products set PTotal =@PTotal where PID ={item.ProductId}"; var _param = new SqlParameter[] { new SqlParameter { ParameterName = "PTotal", Value = updatePro.PTotal } }; _db.Database.ExecuteSqlCommand(sqlUpdate, _param.ToArray()); //_db.Entry(product).CurrentValues.SetValues(updatePro); //_db.Entry(product).State = System.Data.Entity.EntityState.Modified; ProductMovementDTO productMovement = new ProductMovementDTO { ProductId = item.ProductId, Date = DateTime.Now, Quantity = Convert.ToInt32(item.ProductQuantity), Durum = "Satış", Deleted = false, Amount = item.ProductQuantity * item.ProductPrice, DurumType = 1, SaleOwnerId = saleOwnerId }; _db.ProductMovement.Add(base.Map <ProductMovementDTO, ProductMovement>(productMovement)); _db.SaveChanges(); } } else { var entity = _db.SaleTrans.FirstOrDefault(x => x.RecId == item.RecId); if (entity != null) { _db.Entry(entity).CurrentValues.SetValues(item); _db.Entry(entity).State = System.Data.Entity.EntityState.Modified; } } } _db.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); response.Message = e.ToString(); response.ResponseType = ResponseType.Error; } } } return(response); }