public ActionResult CreateOffer([FromBody] PostEmailOfferDTO EmailOfferRelatedDTO) { if (!ModelState.IsValid) { return(BadRequest()); } if (EmailOfferRelatedDTO.ProcedureIds.Count > 0) { foreach (int id in EmailOfferRelatedDTO.ProcedureIds) { EmailOffer emailOfferRelated = new EmailOffer() { GUId = EmailOfferRelatedDTO.GUId, ProcedureId = id, //CoursePackageIds = EmailOfferRelatedDTO.CoursePackageIds, //AlternativeCousrsePackages = EmailOfferRelatedDTO.AlternativeCousrsePackages, CreatedDate = DateTime.UtcNow, CreatedBy = EmailOfferRelatedDTO.CreatedBy, }; _choiceRepository.Add <EmailOffer>(emailOfferRelated); var Procedure = _choiceRepository.DbContext.Procedure.Where(x => x.ProcedureId == id).FirstOrDefault(); if (Procedure != null) { Procedure.UsedInEmailOffer = true; _choiceRepository.Attach(Procedure); } } } if (EmailOfferRelatedDTO.CoursePackageIds.Count > 0) { for (int i = 0; i < EmailOfferRelatedDTO.CoursePackageIds.Count; i++) { EmailOfferCoursePackages emailOfferPackages = new EmailOfferCoursePackages() { GUId = EmailOfferRelatedDTO.GUId, CoursePackageId = EmailOfferRelatedDTO.CoursePackageIds[i], AlternativeCousrsePackageName = EmailOfferRelatedDTO.AlterNativeCoursePackageNames[i], //CoursePackageIds = EmailOfferRelatedDTO.CoursePackageIds, //AlternativeCousrsePackages = EmailOfferRelatedDTO.AlternativeCousrsePackages, CreatedDate = DateTime.UtcNow, CreatedBy = EmailOfferRelatedDTO.CreatedBy, }; _choiceRepository.Add <EmailOfferCoursePackages>(emailOfferPackages); } } _choiceRepository.Complete(); return(CreatedAtRoute("EmailOfferRelatedByGUId", new { EmailOfferRelatedDTO.GUId }, EmailOfferRelatedDTO)); }
public ActionResult UpdateEmailOffer([FromBody] PUTEmailOfferDTO EmailOfferRelatedDTO) { if (!ModelState.IsValid) { return(BadRequest()); } var offersInDB = _choiceRepository.GetEmailOfferRelated().Where(x => x.GUId == EmailOfferRelatedDTO.GUId).ToList(); var CPInDB = _choiceRepository.GetEmailOfferRelatedCPs().Where(x => x.GUId == EmailOfferRelatedDTO.GUId).ToList(); if ((EmailOfferRelatedDTO.ProcedureIds.Count != EmailOfferRelatedDTO.Approve.Count) || (EmailOfferRelatedDTO.ProcedureIds.Count != EmailOfferRelatedDTO.Reject.Count)) { return(BadRequest()); } if (EmailOfferRelatedDTO.ProcedureIds.Count > 0) { for (int i = 0; i < EmailOfferRelatedDTO.ProcedureIds.Count; i++) { var offer = _choiceRepository.GetById <EmailOffer>(x => x.ProcedureId == EmailOfferRelatedDTO.ProcedureIds[i]); if (offer == null) { EmailOffer emailOfferRelated = new EmailOffer() { GUId = EmailOfferRelatedDTO.GUId, ProcedureId = EmailOfferRelatedDTO.ProcedureIds[i], Approve = EmailOfferRelatedDTO.Approve[i], Reject = EmailOfferRelatedDTO.Reject[i], CreatedDate = DateTime.UtcNow, CreatedBy = EmailOfferRelatedDTO.CreatedBy, LastModified = DateTime.UtcNow, LastModifiedBy = EmailOfferRelatedDTO.LastModifiedBy, }; _choiceRepository.Add <EmailOffer>(emailOfferRelated); var Procedure = _choiceRepository.DbContext.Procedure.Where(x => x.ProcedureId == EmailOfferRelatedDTO.ProcedureIds[i]).FirstOrDefault(); if (Procedure != null) { Procedure.UsedInEmailOffer = true; _choiceRepository.Attach(Procedure); } } else { EmailOffer emailOffer = _mapper.Map <EmailOffer>(offer); // emailOffer.GUId = EmailOfferRelatedDTO.GUId; //emailOffer.ProcedureId = EmailOfferRelatedDTO.ProcedureIds[i]; emailOffer.Approve = EmailOfferRelatedDTO.Approve[i]; emailOffer.Reject = EmailOfferRelatedDTO.Reject[i]; emailOffer.LastModified = DateTime.UtcNow; emailOffer.LastModifiedBy = EmailOfferRelatedDTO.LastModifiedBy; _choiceRepository.Attach(emailOffer); var Procedure = _choiceRepository.DbContext.Procedure.Where(x => x.ProcedureId == EmailOfferRelatedDTO.ProcedureIds[i]).FirstOrDefault(); if (Procedure != null) { Procedure.UsedInEmailOffer = false; _choiceRepository.Attach(Procedure); } } } } if (EmailOfferRelatedDTO.CoursePackageIds.Count > 0) { for (int i = 0; i < EmailOfferRelatedDTO.CoursePackageIds.Count; i++) { var CP = _choiceRepository.GetById <EmailOfferCoursePackages>(x => x.CoursePackageId == EmailOfferRelatedDTO.CoursePackageIds[i]);// CPInDB.Where(x => x.CoursePackageId == EmailOfferRelatedDTO.CoursePackageIds[i]); if (CP == null) { EmailOfferCoursePackages emailOfferPackages = new EmailOfferCoursePackages() { GUId = EmailOfferRelatedDTO.GUId, CoursePackageId = EmailOfferRelatedDTO.CoursePackageIds[i], AlternativeCousrsePackageName = EmailOfferRelatedDTO.AlterNativeCoursePackageNames[i], CreatedDate = DateTime.UtcNow, CreatedBy = EmailOfferRelatedDTO.CreatedBy, }; _choiceRepository.Add <EmailOfferCoursePackages>(emailOfferPackages); } } } _choiceRepository.Complete(); foreach (var offer in offersInDB) { if (!EmailOfferRelatedDTO.ProcedureIds.Contains(offer.ProcedureId)) { var Noffer = _choiceRepository.GetById <EmailOffer>(x => x.ProcedureId == offer.ProcedureId); _choiceRepository.Remove(Noffer); var Procedure = _choiceRepository.DbContext.Procedure.Where(x => x.ProcedureId == offer.ProcedureId).FirstOrDefault(); if (Procedure != null) { Procedure.UsedInEmailOffer = false; _choiceRepository.Attach(Procedure); } } } foreach (var CP in CPInDB) { if (!EmailOfferRelatedDTO.CoursePackageIds.Contains(CP.CoursePackageId)) { var NCp = _choiceRepository.GetById <EmailOfferCoursePackages>(x => x.CoursePackageId == CP.CoursePackageId); _choiceRepository.Remove(NCp); } } _choiceRepository.Complete(); return(NoContent()); }