Example #1
0
        /// <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));
        }
Example #2
0
        /// <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);
            }
        }