public string Update(PayableInvoice entity) { if (entity.IsValid()) { return(this.repository.Update(entity)); } else { return("Entity is not in valid state"); } }
public static void Update(PayableInvoiceModel payableInvoiceModel) { PayableInvoice entity = getEntityByModel(payableInvoiceModel); string result = string.Empty; if (entity.IsValid()) { if (payableInvoiceModel.Id > 0) { result = service.Update(entity); } else { result = service.Insert(entity); } if (!string.IsNullOrEmpty(result)) { var savedDetail = getInvoiceDetailByInvoiceId(result); if (savedDetail.Count() > payableInvoiceModel.InvoiceDetail.Count()) { var tobeDeleted = savedDetail.Take(savedDetail.Count() - payableInvoiceModel.InvoiceDetail.Count()); foreach (var item in tobeDeleted) { detailService.Delete(item.Id.ToString(), AuthenticationHelper.CompanyId.Value); } savedDetail = getInvoiceDetailByInvoiceId(result); } foreach (var detail in payableInvoiceModel.InvoiceDetail) { PayableInvoiceDetail detailEntity = getEntityByModel(detail, savedDetail.Count()); if (detailEntity.IsValid()) { detailEntity.InvoiceId = Convert.ToInt64(result); if (savedDetail.Count() > 0) { detailEntity.Id = savedDetail.FirstOrDefault().Id; savedDetail.Remove(savedDetail.FirstOrDefault(rec => rec.Id == detailEntity.Id)); detailService.Update(detailEntity); } else { detailService.Insert(detailEntity); } } } } } }