示例#1
0
        public static bool CompleteDisbursement(int dNo, decimal?pin)
        {
            LussisEntities            context  = new LussisEntities();
            Disbursement              d        = context.Disbursements.Where(x => x.DisbursementNo == dNo).FirstOrDefault();
            List <DisbursementDetail> dDetails = d.DisbursementDetails.ToList();

            // If Pin is Valid
            if (d.Pin == pin)
            {
                // Update Disbursement Status
                d.Status = "Completed";

                // Create Backlogs
                for (int i = 0; i < dDetails.Count; i++)
                {
                    String deptCode = dDetails[i].Disbursement.DeptCode;
                    String itemCode = dDetails[i].ItemNo;
                    if (dDetails[i].Needed - dDetails[i].Received > 0)
                    {
                        BackLog backlog = context
                                          .BackLogs
                                          .Where(x =>
                                                 x.DeptCode.Equals(deptCode) &&
                                                 x.ItemNo.Equals(itemCode))
                                          .FirstOrDefault();

                        if (backlog == null)
                        {
                            backlog            = new BackLog();
                            backlog.DeptCode   = dDetails[i].Disbursement.DeptCode;
                            backlog.ItemNo     = dDetails[i].ItemNo;
                            backlog.BackLogQty = dDetails[i].Needed - dDetails[i].Received;
                            context.BackLogs.Add(backlog);
                        }
                        else
                        {
                            backlog.BackLogQty += dDetails[i].Needed - dDetails[i].Received;
                        }
                    }
                }

                context.SaveChanges();

                // Send Email
                Employee recipient    = d.Employee;
                var      emailDetails = dDetails.Select(
                    dD => new
                {
                    ItemNo          = dD.ItemNo,
                    ItemDescription = dD.StationeryCatalogue.Description,
                    Needed          = dD.Needed,
                    Delivered       = dD.Received
                });

                string recipientEmail = recipient.Email;
                string emailSubject   = EmailTemplate.GenerateCompletedDisbursementSubject(d.DisbursementNo);
                string emailContent   = EmailTemplate.GenerateCompletedDisbursementEmail(recipient.EmpName, d.DisbursementNo, d.DisbursementDate);
                EmailBackend.sendEmailStep(recipientEmail, emailSubject, emailContent);

                return(true);
            }
            else
            {
                return(false);
            }
        }