public void EditAssignment(FormCollection form)
        {
            string      emailBody;
            MailMessage mail   = new MailMessage();
            SmtpClient  mailer = new SmtpClient("owa13.Sullivan.edu");

            //mail.Bcc.Add(new MailAddress("*****@*****.**"));
            //mail.Bcc.Add(new MailAddress("*****@*****.**"));

            mail.IsBodyHtml  = true;
            mailer.EnableSsl = false;
            mail.From        = new MailAddress("*****@*****.**");

            IEnumerable <Staff> staff = request.Staffs;

            int requestID = Convert.ToInt16(Request.QueryString["requestID"]);

            Dictionary <string, bool> staffing = new Dictionary <string, bool>();

            foreach (var employee in staff)
            {
                bool assigned;

                if (Request.Form["CB_" + employee.staffID] != null)
                {
                    assigned = true;
                }
                else
                {
                    assigned = false;
                }

                staffing.Add(employee.staffID, assigned);
            }

            foreach (var assignment in staffing)
            {
                var editRequestAssignment = request.RequestAssignments.FirstOrDefault(a => a.requestID == requestID && a.staffID == assignment.Key);

                if (assignment.Value == true)
                {
                    if (editRequestAssignment == null)
                    {
                        RequestAssignment myRequest = new RequestAssignment();

                        myRequest.requestID = requestID;
                        myRequest.staffID   = assignment.Key;
                        request.AddToRequestAssignments(myRequest);

                        mail.To.Add(assignment.Key + "@Sullivan.edu");

                        request.SaveChanges();
                    }
                }
                else if (assignment.Value == false)
                {
                    if (editRequestAssignment != null)
                    {
                        request.RequestAssignments.DeleteObject(editRequestAssignment);
                        request.SaveChanges();
                    }
                }
            }

            if (mail.To.Count > 0)
            {
                emailBody = "<p>You have been assigned a project. <a href='https://secure.sullivan.edu/ProjectRequest/ProjectRequest/Request/RequestInfo?requestID="
                            + requestID.ToString() + "'>Click Here</a> to view the project";

                emailBody += "<p><a href='https://secure.sullivan.edu/ProjectRequest/ProjectRequest/Assignment/Index'>Click here to view all your assignments</p>";

                mail.Body    = emailBody;
                mail.Subject = "Creative Communications Project Assignment";

                mailer.Send(mail);
            }
        }
Exemplo n.º 2
0
        public bool SaveRequestAssignment(RequestVM model)
        {
            if (model.RequestId > 0)
            {
                var request = _context.Requests.Single(p => p.RequestId == model.RequestId);

                // If request already assign
                if (model.IsRequestAssignedAlready == true)
                {
                    var requestAssignment       = _context.RequestAssignments.Single(p => p.RequestId == model.RequestId);
                    var requestReviewerResponse = _context.RequestResponses.SingleOrDefault(p => p.RequestId == model.RequestId);

                    if (requestAssignment.IsAssignToArchitect)
                    {
                        if (requestAssignment.ArchitechStatus == Convert.ToInt32(ReviewerRequestStatus.MoreInfoRequired))
                        {
                            // Update Architect Response
                            if (requestReviewerResponse != null)
                            {
                                requestReviewerResponse.IsNoHistoricProperty = null;
                                requestReviewerResponse.IsHistoricProperty   = null;
                                //requestReviewerResponse.IsNoEffect = null;
                                //requestReviewerResponse.IsNoAdverseEffect = null;
                                //requestReviewerResponse.IsNoAdverseEffectWithCondition = null;

                                requestReviewerResponse.ArchitectResponse = null;
                                requestReviewerResponse.ArchitectComment  = null;
                                requestReviewerResponse.ArchitectUserId   = null;
                            }

                            // Update Architect Assignment Status
                            requestAssignment.ArchitechStatus = Convert.ToInt32(ReviewerRequestStatus.Pending);
                        }
                    }
                    if (requestAssignment.IsAssignToArchaelogical)
                    {
                        if (requestAssignment.ArchaelogicalStatus == Convert.ToInt32(ReviewerRequestStatus.MoreInfoRequired) || requestAssignment.ArchaelogicalStatus == Convert.ToInt32(ReviewerRequestStatus.SurveyRequired))
                        {
                            // Update Archaelogical Response
                            if (requestReviewerResponse != null)
                            {
                                requestReviewerResponse.ArchaelogicalResponse = null;
                                requestReviewerResponse.ArchaelogicalComment  = null;
                                requestReviewerResponse.ArchaelogicalUserId   = null;
                            }
                            // Update Archaelogical Assignment Status
                            requestAssignment.ArchaelogicalStatus = Convert.ToInt32(ReviewerRequestStatus.Pending);
                        }
                    }
                    if (requestAssignment.IsAssignToTechnical)
                    {
                        if (requestAssignment.TechnicalStatus == Convert.ToInt32(ReviewerRequestStatus.MoreInfoRequired))
                        {
                            // Update Technical Response
                            if (requestReviewerResponse != null)
                            {
                                requestReviewerResponse.TechnicalResponse = null;
                                requestReviewerResponse.TechnicalComment  = null;
                                requestReviewerResponse.TechnicalUserId   = null;
                            }

                            // Update Technical Assignment Status
                            requestAssignment.TechnicalStatus = Convert.ToInt32(ReviewerRequestStatus.Pending);
                        }
                    }
                    if (requestAssignment.IsAssignToLandMarks)
                    {
                        if (requestAssignment.LandMarksStatus == Convert.ToInt32(ReviewerRequestStatus.MoreInfoRequired))
                        {
                            // Update Technical Response
                            if (requestReviewerResponse != null)
                            {
                                requestReviewerResponse.LankMarksResponse = null;
                                requestReviewerResponse.LankMarksComment  = null;
                                requestReviewerResponse.LankMarksUserId   = null;
                            }

                            // Update Technical Assignment Status
                            requestAssignment.LandMarksStatus = Convert.ToInt32(ReviewerRequestStatus.Pending);
                        }
                    }
                    // Start internal clock on request re-assign
                    var clock = _context.Clocks.Single(p => p.RequestId == model.RequestId);
                    clock.InternalClockDate     = DateTime.Now.AddDays(Convert.ToInt32(clock.InternalRemainingDays));
                    clock.InternalClockStatus   = Convert.ToInt16(ClockStatus.Start);
                    clock.InternalRemainingDays = null;
                    _context.SaveChanges();

                    // Update Request Status to Assigned
                    request.Status = Convert.ToInt32(RequestStatus.Assigned);
                    _context.SaveChanges();
                    return(true);
                }
                else
                {
                    if (model.RequestAssignment.IsAccept)
                    {
                        var assignment = new RequestAssignment()
                        {
                            RequestId      = model.RequestId ?? 0,
                            FederalOrState = model.RequestAssignment.FederalOrState,
                            ProjectNumber  = model.RequestAssignment.ProjectNumber,
                            RespondDate    = model.RequestAssignment.RespondDate,

                            IsAssignToArchitect     = model.RequestAssignment.IsAssignToArchitect,
                            IsAssignToArchaelogical = model.RequestAssignment.IsAssignToArchaelogical,
                            IsAssignToTechnical     = model.RequestAssignment.IsAssignToTechnical,
                            IsAssignToLandMarks     = model.RequestAssignment.IsAssignToLandMarks,

                            ArchitechStatus     = model.RequestAssignment.IsAssignToArchitect ? Convert.ToInt32(ReviewerRequestStatus.Pending) : 0,
                            ArchaelogicalStatus = model.RequestAssignment.IsAssignToArchaelogical ? Convert.ToInt32(ReviewerRequestStatus.Pending) : 0,
                            TechnicalStatus     = model.RequestAssignment.IsAssignToTechnical ? Convert.ToInt32(ReviewerRequestStatus.Pending) : 0,
                            LandMarksStatus     = model.RequestAssignment.IsAssignToLandMarks ? Convert.ToInt32(ReviewerRequestStatus.Pending) : 0
                        };
                        _context.RequestAssignments.Add(assignment);
                        _context.SaveChanges();

                        // Update request status based on IsAccept
                        request.Status = Convert.ToInt32(RequestStatus.Assigned);

                        // Start internal clock
                        var clock = _context.Clocks.Single(p => p.RequestId == model.RequestId);
                        clock.InternalClockDate   = DateTime.Now.AddDays(15);
                        clock.InternalClockStatus = Convert.ToInt16(ClockStatus.Start);
                        _context.SaveChanges();
                    }
                    else
                    {
                        request.Status = Convert.ToInt32(RequestStatus.Returned);
                    }
                    _context.SaveChanges();
                    return(true);
                }
            }
            return(false);
        }