sheikh-k
11/3/2016 - 2:08 PM

MeasurementUnitConversion - dRetail - BEST & Simple Logic).cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace dRetail.Common
{
  public static class MeasurementUnitConversion
  {
    public static int GetDefaultMeasurementUnit(int measurementUnitID) {
        var _db = Global.dbContext;
        var measurementUnitTypeID = _db.Set_MeasurementUnit.Where(x => x.ID == measurementUnitID && x.IsActive == true).FirstOrDefault().MeasurementUnitTypeID;
        var defaultMeasurementUnitID = _db.Set_MeasurementUnit.Where(x => x.MeasurementUnitTypeID == measurementUnitTypeID && x.IsDefault == true && x.IsActive == true).FirstOrDefault().ID;
        return defaultMeasurementUnitID;
    }
    
    public static decimal Convert(int measurementUnitID, decimal qty)
    {
        try
        {
            if (qty != 0)
            {
                var _db = Global.dbContext;
               var defaultMeasurementUnitID= GetDefaultMeasurementUnit(measurementUnitID);
               if (defaultMeasurementUnitID == measurementUnitID)
                {
                    return qty;
                }
                else
                {                       
                    var unitConversion = _db.Set_UnitConversion.Where(x => x.FromUnitID == measurementUnitID && x.ToUnitID == defaultMeasurementUnitID).FirstOrDefault();
                    if (unitConversion != null) return qty * unitConversion.Value;
                  
                    unitConversion = _db.Set_UnitConversion.Where(x => x.FromUnitID == defaultMeasurementUnitID && x.ToUnitID == measurementUnitID).FirstOrDefault();
                    if (unitConversion != null) return qty/unitConversion.Value;
                    
                    throw new Exception();
                }
            }
            return 0;
        }
        catch(Exception e)
        {
            throw e;
        }
    }
  }
}