/// <summary> /// Create a AbuseType /// </summary> /// <param name="currentUser"></param> /// <param name="user"></param> /// <param name="appID"></param> /// <param name="overrideID"></param> /// <param name="dc"></param> public UploadAttachmentResponse UploadAttachment(UploadAttachmentRequest request) { // Create unit of work IUnitOfWork uow = new UnitOfWork(request.UserID); // Create repository Repository <Attachment> attachmentRepository = new Repository <Attachment>(uow.ObjectContext, request.UserID, request.UserID, "", ""); // currentUser, user, appID, overrideID); Repository <AttachmentData> attachmentdataRepository = new Repository <AttachmentData>(uow.ObjectContext, request.UserID, request.UserID, "", ""); // currentUser, user, appID, overrideID); Repository <IncidentUpdateEvent> incidentUpdateEventRepository = new Repository <IncidentUpdateEvent>(uow.ObjectContext, request.UserID, request.UserID, "", ""); Repository <Staff> staffRepository = new Repository <Staff>(uow.ObjectContext, request.UserID, request.UserID, "", ""); //Create ExceptionManager IExceptionManager exceptionManager = new ExceptionManager(); // Call overload with injected objects return(UploadAttachment(attachmentRepository, attachmentdataRepository, incidentUpdateEventRepository, staffRepository, uow, exceptionManager, request)); }
/// <summary> /// UploadAttachment /// </summary> /// <param name="request">UploadAttachmentRequest information</param> public UploadAttachmentResponse UploadAttachment(IRepository <Attachment> attachmentRepository, IRepository <AttachmentData> attachmentDataRepository, IRepository <IncidentUpdateEvent> incidentUpdateEventRepository, IRepository <Staff> staffRepository, IUnitOfWork uow, IExceptionManager exceptionManager, UploadAttachmentRequest request) { UploadAttachmentResponse ReturnValue = new UploadAttachmentResponse(); try { #region Parameter validation if (null == request) { throw new ArgumentOutOfRangeException("request"); } if (null == attachmentRepository) { throw new ArgumentOutOfRangeException("dataRepository"); } if (null == uow) { throw new ArgumentOutOfRangeException("uow"); } #endregion using (uow) { // Create response message contract bool HasError = false; // Create empty message list List <string> Messages = new List <string>(); var AttachmentData = AutoMapper.Mapper.Map <AttachmentDC, Attachment>(request.Attachment); HasError = AttachmentComponent.UploadAttachment(AttachmentData, request.DocumentBody, attachmentRepository, attachmentDataRepository); //out Messages); //pass back the details of the newly inserted document ReturnValue.Attachment = AutoMapper.Mapper.Map <Attachment, AttachmentDC>(AttachmentData); if (!HasError) { Messages.Add("Added"); // Add to Incident history IncidentUpdateEvent Guid userWhoUpdatedIncident = Guid.Parse(request.UserID); string staffName = staffRepository.Find(new Specification <Staff>(x => x.Code == userWhoUpdatedIncident)).Select(x => x.FirstName + " " + x.LastName).First(); IncidentUpdateEvent incidentUpdateEventItem = new IncidentUpdateEvent(); incidentUpdateEventItem.Code = Guid.NewGuid(); incidentUpdateEventItem.DateTime = DateTime.Now; incidentUpdateEventItem.IncidentCode = AttachmentData.IncidentCode; incidentUpdateEventItem.Type = "Update"; incidentUpdateEventItem.UpdateBy = staffName; //IncidentUpdateEvent List <IncidentUpdateEvent> incidentUpdateEventList = incidentUpdateEventRepository.Find(new Specification <IncidentUpdateEvent>(x => x.IncidentCode == AttachmentData.IncidentCode && x.Type == "Update")).ToList(); incidentUpdateEventList = incidentUpdateEventList.OrderBy(x => x.DateTime).ToList(); //Only store last 5 update events (list is ordered by date time (asc) so the elementAt 0 will be the oldest if (incidentUpdateEventList.Count == 5) { incidentUpdateEventRepository.Delete(incidentUpdateEventList.ElementAt(0)); } incidentUpdateEventRepository.Add(incidentUpdateEventItem); } else { Messages.Add("Failed"); } //if (IsDuplicate) //{ // Messages.Add(MessageComponent.CreateWarningMessage(ResourceInformation.RES_INFORM_DOCUMENT_DUPLICATE)); //} // Convert messages be's to data contracts ReturnValue.Messages = Messages; // Return success/failure indicator ReturnValue.Result = HasError; uow.Commit(); } return(ReturnValue); } catch (Exception e) { //Prevent exception from propogating across the service interface exceptionManager.ShieldException(e); return(null); } }